avue/app_web/src/authservice/auth-service-register.ts

95 lines
3.6 KiB
TypeScript

/**
* 实体权限服务注册中心
*
* @export
* @class AuthServiceRegister
*/
export class AuthServiceRegister {
/**
* 所有实体权限服务Map
*
* @protected
* @type {*}
* @memberof AuthServiceRegister
*/
protected allAuthService: Map<string, () => Promise<any>> = new Map();
/**
* 已加载实体权限服务Map缓存
*
* @protected
* @type {Map<string, any>}
* @memberof AuthServiceRegister
*/
protected serviceCache: Map<string, any> = new Map();
/**
* Creates an instance of AuthServiceRegister.
* @memberof AuthServiceRegister
*/
constructor() {
this.init();
}
/**
* 初始化
*
* @protected
* @memberof AuthServiceRegister
*/
protected init(): void {
this.allAuthService.set('dstmicroservice', () => import('@/authservice/dst-microservice/dst-microservice-auth-service'));
this.allAuthService.set('metafield', () => import('@/authservice/meta-field/meta-field-auth-service'));
this.allAuthService.set('dstapp', () => import('@/authservice/dst-app/dst-app-auth-service'));
this.allAuthService.set('dstcomponent', () => import('@/authservice/dst-component/dst-component-auth-service'));
this.allAuthService.set('metadataset', () => import('@/authservice/meta-data-set/meta-data-set-auth-service'));
this.allAuthService.set('dstview', () => import('@/authservice/dst-view/dst-view-auth-service'));
this.allAuthService.set('dstapi', () => import('@/authservice/dst-api/dst-api-auth-service'));
this.allAuthService.set('dstrouter', () => import('@/authservice/dst-router/dst-router-auth-service'));
this.allAuthService.set('dstconfig', () => import('@/authservice/dst-config/dst-config-auth-service'));
this.allAuthService.set('metamodel', () => import('@/authservice/meta-model/meta-model-auth-service'));
this.allAuthService.set('metamodule', () => import('@/authservice/meta-module/meta-module-auth-service'));
this.allAuthService.set('dstdatasource', () => import('@/authservice/dst-data-source/dst-data-source-auth-service'));
this.allAuthService.set('dstsystem', () => import('@/authservice/dst-system/dst-system-auth-service'));
this.allAuthService.set('metarelationship', () => import('@/authservice/meta-relationship/meta-relationship-auth-service'));
this.allAuthService.set('bladevisual', () => import('@/authservice/blade-visual/blade-visual-auth-service'));
this.allAuthService.set('metaentity', () => import('@/authservice/meta-entity/meta-entity-auth-service'));
}
/**
* 加载实体权限服务
*
* @protected
* @param {string} serviceName
* @returns {Promise<any>}
* @memberof AuthServiceRegister
*/
protected async loadService(serviceName: string): Promise<any> {
const service = this.allAuthService.get(serviceName);
if (service) {
return service();
}
}
/**
* 获取应用实体权限服务
*
* @param {string} name
* @returns {Promise<any>}
* @memberof AuthServiceRegister
*/
public async getService(name: string): Promise<any> {
if (this.serviceCache.has(name)) {
return this.serviceCache.get(name);
}
const authService: any = await this.loadService(name);
if (authService && authService.default) {
const instance: any = new authService.default();
this.serviceCache.set(name, instance);
return instance;
}
}
}
export const authServiceRegister: AuthServiceRegister = new AuthServiceRegister();