File

src/app/core/auth/permissions.service.ts

Index

Properties
Methods

Methods

isAllow
isAllow(action: Action)
Parameters :
Name Type Optional Description
action Action
Returns : boolean
isDeny
isDeny(action: Action)
Parameters :
Name Type Optional Description
action Action
Returns : boolean
isSomeAllow
isSomeAllow(actions: Action[])
Parameters :
Name Type Optional Description
actions Action[]
Returns : any
setPermissions
setPermissions(permissions: Permission[])
Parameters :
Name Type Optional Description
permissions Permission[]
Returns : void

Properties

Public actions
actions:
Default value : Actions
Public changes
changes:
Default value : this.permissionsSubject.asObservable()
Private permissions
permissions: literal type
Type : literal type
Default value : {}
Private permissionsSubject
permissionsSubject:
Default value : new Subject()
import {Injectable} from "@angular/core";
import {Permission} from "../models/auth/permission.model";
import {Action, Actions} from "../models/auth/action.type";
import {PermissionStates} from "../models/auth/permission-state.type";
import {Subject} from "rxjs";


@Injectable()
export class PermissionsService {

  private permissions: {[action: string]: Permission} = {};
  private permissionsSubject = new Subject();

  public changes = this.permissionsSubject.asObservable();
  public actions = Actions;

  setPermissions(permissions: Permission[]) {
    this.permissions = {};
    permissions.forEach(permission => this.permissions[permission.action] = permission);
    this.permissionsSubject.next();
  }

  isAllow(action: Action): boolean {
    return this.permissions[action] && this.permissions[action].state === PermissionStates.Allow;
  }

  isSomeAllow(...actions: Action[]) {
    return actions.some(this.isAllow)
  }

  isDeny(action: Action): boolean {
    return !this.permissions[action] || this.permissions[action].state === PermissionStates.Deny;
  }

}

results matching ""

    No results matching ""