import { Injectable, } from '@angular/core'; import {Observable} from 'rxjs/Observable'; import { HelpersService } from './helpers.service'; import { HttpClient } from '../../common/HttpClient'; import { UserService } from './user.service'; import 'rxjs/add/operator/map'; import { Http, Response, Jsonp } from '@angular/http'; import { environment } from '../../environments/environment'; @Injectable() export class UserRoleService { private canPerformCalculationsFlag: boolean = false; constructor(private helpers: HelpersService, private _http: HttpClient, private userService: UserService) { } public updateUserRoles(): Promise { return new Promise((resolve, reject) => { if (!environment.production) { this.canPerformCalculationsFlag = true; } this.getUser().subscribe(data => { if (environment.production) { console.log('User rolse = ', data); this.canPerformCalculationsFlag = false; if (data === 'FullAccess') { this.canPerformCalculationsFlag = true; } else { const userData = JSON.parse(data); for (let p = 0; p < userData.permissions.length; p++) { if (userData.permissions[p].mo.code != "CN") continue; for (let i = 0; i < userData.permissions[p].actions.length; i++) { if (userData.permissions[p].actions[i] === 'PerformCalculations') { this.canPerformCalculationsFlag = true; continue; } } } } } else { this.canPerformCalculationsFlag = true; } resolve(); }, err => { reject(); }); }); } public canPerformCalculations(): boolean { return this.canPerformCalculationsFlag; } private getUser(): Observable { return this._http.get(this.helpers.getApiPathForTypicals('GetUser'), '') .map((response: Response) => response.json()) .do(data => console.log('User data received')); } }