import { User } from 'oidc-client'; import { Authentication } from '../interface/hub.type'; import { ServiceBus } from '../interface/service-bus.type'; import { ServiceBusClient } from './service-bus-client'; /** * 认证 * */ export class AuthenticationService implements Authentication { serviceBus: ServiceBus; coreAuthAppId = `core/authentication`; // 主要是认证信息 private _user!: User | null; private serviceBusClient: ServiceBusClient; constructor(serviceBus: ServiceBus, coreAuthAppId?: string) { this.serviceBus = serviceBus; const _coreAuthAppId = coreAuthAppId ? coreAuthAppId : this.coreAuthAppId; this.serviceBusClient = serviceBus.getClient(_coreAuthAppId); } signIn(): Promise { return this.getServiceBusClient() .request({ type: 'signIn' }) .toPromise() .then((s) => {}); } signOut(): Promise { return this.getServiceBusClient() .request({ type: 'signOut' }) .toPromise() .then((s) => {}); } setAuthentication(user: User) { this._user = user; } getAuthentication(): User | null { if (this._user) { return this._user; } return null; } // 主应用加载时,认证子应用不一定加载完 private getServiceBusClient() { if (this.serviceBusClient.initState === 'success') { return this.serviceBusClient; } this.serviceBusClient.init(); return this.serviceBusClient; } }