import { Injectable, OnInit } from '@angular/core'; import { CbmsService } from './../cbms.services'; import { CbmsSharedService } from './../services/cbms-shared.service'; import { Observable, Observer } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class PermissionService implements OnInit{ public dataObserver: Observer; isPermissionLoaded: boolean; public permissionLst: any; userInfoId: any; public permissionLoaded: Observable; constructor(private cbmsService: CbmsService, private cbmsShared: CbmsSharedService) { this.cbmsShared.userInfoId$.subscribe( t => { this.userInfoId = t; }); this.permissionLoaded = Observable.create((observer) => { this.dataObserver = observer; }); this.permissionLoaded.subscribe(); } ngOnInit(): void { } public async loadModulePermissions(userInfoId: any) { this.permissionLst = await this.cbmsService.GetPermissionsByUserId(userInfoId); this.isPermissionLoaded = true; if (this.dataObserver) { this.dataObserver.next(this.permissionLst); } return this.isPermissionLoaded; } hasAnyPermissions(keys: string[]) { if (this.permissionLst) { for (let pIndex = 0; pIndex < keys.length; pIndex++) { if (this.permissionLst.filter(x => x.toLowerCase() === keys[pIndex].toLowerCase()).length > 0) { return true; } } } return false; } }