{"version":3,"file":"ngx-security-roles.mjs","sources":["../../../projects/roles/src/lib/subject-roles.provider.ts","../../../projects/roles/src/lib/has-any-role/has-any-role.directive.ts","../../../projects/roles/src/lib/has-any-role/has-any-role.pipe.ts","../../../projects/roles/src/lib/has-role/has-role.directive.ts","../../../projects/roles/src/lib/has-role/has-role.pipe.ts","../../../projects/roles/src/lib/has-roles/has-roles.directive.ts","../../../projects/roles/src/lib/has-roles/has-roles.pipe.ts","../../../projects/roles/src/lib/roles.module.ts","../../../projects/roles/src/ngx-security-roles.ts"],"sourcesContent":["import { Injectable, OnDestroy } from '@angular/core';\nimport { Subject, SubjectDetails, SubjectService } from '@ngx-security/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\n\nexport abstract class SubjectRolesProvider {\n\n  abstract roles$: Observable<string[]>;\n\n  abstract getRoles(): string[];\n\n  protected constructor() {\n  }\n\n  hasRoleAsync(role: string): Observable<boolean> {\n    return this.roles$.pipe(\n      map((subjectRoles) => this._hasRole(role, subjectRoles))\n    );\n  }\n\n  hasAnyRoleAsync(roles: string[]): Observable<boolean> {\n    return this.roles$.pipe(\n      map((subjectRoles) => this._hasAnyRole(roles, subjectRoles))\n    );\n  }\n\n  hasRolesAsync(roles: string[]): Observable<boolean> {\n    return this.roles$.pipe(\n      map((subjectRoles) => this._hasRoles(roles, subjectRoles))\n    );\n  }\n\n  hasRole(role: string): boolean {\n    return this._hasRole(role);\n  }\n\n  hasAnyRole(roles: string[]): boolean {\n    return this._hasAnyRole(roles);\n  }\n\n  hasRoles(roles: string[]): boolean {\n    return this._hasRoles(roles);\n  }\n\n  protected _hasRole(role: string, subjectRoles: string[] = this.getRoles()) {\n    if (!subjectRoles || !role) {\n      return false;\n    }\n    return subjectRoles.indexOf(role) >= 0;\n  }\n\n  protected _hasAnyRole(roles: string[], subjectRoles: string[] = this.getRoles()) {\n    if (!subjectRoles || !roles) {\n      return false;\n    }\n    return subjectRoles.filter((subjectRole) => roles.indexOf(subjectRole) >= 0).length > 0;\n  }\n\n  protected _hasRoles(roles: string[], subjectRoles: string[] = this.getRoles()) {\n    if (!subjectRoles || !roles) {\n      return false;\n    }\n    return subjectRoles.filter((subjectRole) => roles.indexOf(subjectRole) >= 0).length === roles.length;\n  }\n}\n\n@Injectable()\nexport class StandardSubjectRolesProvider<D extends SubjectDetails, S extends Subject<D>> extends SubjectRolesProvider {\n\n  roles$: Observable<string[]> = this.subject.authorities$;\n\n  constructor(private subject: SubjectService<D, S>) {\n    super();\n  }\n\n  getRoles(): string[] {\n    return this.subject.getAuthorities();\n  }\n}\n\n@Injectable()\nexport class UpdatableSubjectRolesProvider extends SubjectRolesProvider implements OnDestroy {\n\n  private roles: BehaviorSubject<string[]> = new BehaviorSubject([]);\n\n  roles$: Observable<string[]> = this.roles.asObservable();\n\n  constructor() {\n    super();\n  }\n\n  ngOnDestroy(): void {\n    this.roles.complete();\n  }\n\n  getRoles(): string[] {\n    return this.roles.getValue();\n  }\n\n  update(roles: string[]): void {\n    this.roles.next(roles);\n  }\n}\n","import { Directive, ElementRef, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Directive({selector: '[hasAnyRole]'})\nexport class HasAnyRoleDirective implements OnInit, OnDestroy {\n\n  private roles: string[] = null;\n\n  private sub: Subscription;\n  private embeddedViewRef: EmbeddedViewRef<any> = null;\n\n  @Input()\n  set hasAnyRole(roles: string[]) {\n    this.roles = roles;\n    this.updateView();\n  }\n\n  constructor(private element: ElementRef, private templateRef: TemplateRef<any>,\n              private viewContainer: ViewContainerRef, private subject: SubjectRolesProvider) {\n  }\n\n  ngOnInit(): void {\n    this.sub = this.subject.roles$.subscribe(() => this.updateView());\n  }\n\n  ngOnDestroy(): void {\n    if (this.sub) {\n      this.sub.unsubscribe();\n    }\n  }\n\n  private updateView() {\n    if (!this.subject.hasAnyRole(this.roles)) {\n      this.viewContainer.clear();\n      this.embeddedViewRef = null;\n    } else if (!this.embeddedViewRef) {\n      this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n    }\n  }\n}\n","import { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Pipe({name: 'hasAnyRole', pure: false})\nexport class HasAnyRolePipe implements PipeTransform, OnDestroy {\n\n  private hasAnyRole: boolean = null;\n\n  private sub: Subscription = null;\n\n  constructor(private ref: ChangeDetectorRef, private subject: SubjectRolesProvider) {\n  }\n\n  transform(roles: string | string[], rolesAsArg: string[]): boolean {\n    roles = rolesAsArg || roles as string[];\n    this.clear();\n    this.sub = this.subject.hasAnyRoleAsync(roles).subscribe((hasAnyRole) => {\n      if (this.hasAnyRole !== hasAnyRole) {\n        this.hasAnyRole = hasAnyRole;\n        this.ref.markForCheck();\n      }\n    });\n    return this.hasAnyRole;\n  }\n\n  ngOnDestroy(): void {\n    this.clear();\n  }\n\n  private clear(): void {\n    this.hasAnyRole = null;\n    if (this.sub) {\n      this.sub.unsubscribe();\n      this.sub = null;\n    }\n  }\n}\n","import { Directive, ElementRef, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Directive({selector: '[hasRole]'})\nexport class HasRoleDirective implements OnInit, OnDestroy {\n\n  private role: string = null;\n\n  private sub: Subscription;\n  private embeddedViewRef: EmbeddedViewRef<any> = null;\n\n  @Input()\n  set hasRole(role: string) {\n    this.role = role;\n    this.updateView();\n  }\n\n  constructor(private element: ElementRef, private templateRef: TemplateRef<any>,\n              private viewContainer: ViewContainerRef, private subject: SubjectRolesProvider) {\n  }\n\n  ngOnInit(): void {\n    this.sub = this.subject.roles$.subscribe(() => this.updateView());\n  }\n\n  ngOnDestroy(): void {\n    if (this.sub) {\n      this.sub.unsubscribe();\n    }\n  }\n\n  private updateView() {\n    if (!this.subject.hasRole(this.role)) {\n      this.viewContainer.clear();\n      this.embeddedViewRef = null;\n    } else if (!this.embeddedViewRef) {\n      this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n    }\n  }\n}\n","import { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Pipe({name: 'hasRole', pure: false})\nexport class HasRolePipe implements PipeTransform, OnDestroy {\n\n  private hasRole: boolean = null;\n\n  private sub: Subscription = null;\n\n  constructor(private ref: ChangeDetectorRef, private subject: SubjectRolesProvider) {\n  }\n\n  transform(role: string, roleAsArg: string): boolean {\n    role = roleAsArg || role;\n    this.clear();\n    this.sub = this.subject.hasRoleAsync(role).subscribe((hasRole) => {\n      if (this.hasRole !== hasRole) {\n        this.hasRole = hasRole;\n        this.ref.markForCheck();\n      }\n    });\n    return this.hasRole;\n  }\n\n  ngOnDestroy(): void {\n    this.clear();\n  }\n\n  private clear(): void {\n    this.hasRole = null;\n    if (this.sub) {\n      this.sub.unsubscribe();\n      this.sub = null;\n    }\n  }\n}\n","import { Directive, ElementRef, EmbeddedViewRef, Input, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Directive({selector: '[hasRoles]'})\nexport class HasRolesDirective implements OnInit, OnDestroy {\n\n  private roles: string[] = null;\n\n  private sub: Subscription;\n  private embeddedViewRef: EmbeddedViewRef<any> = null;\n\n  @Input()\n  set hasRoles(roles: string[]) {\n    this.roles = roles;\n    this.updateView();\n  }\n\n  constructor(private element: ElementRef, private templateRef: TemplateRef<any>,\n              private viewContainer: ViewContainerRef, private subject: SubjectRolesProvider) {\n  }\n\n  ngOnInit(): void {\n    this.sub = this.subject.roles$.subscribe(() => this.updateView());\n  }\n\n  ngOnDestroy(): void {\n    if (this.sub) {\n      this.sub.unsubscribe();\n    }\n  }\n\n  private updateView() {\n    if (!this.subject.hasRoles(this.roles)) {\n      this.viewContainer.clear();\n      this.embeddedViewRef = null;\n    } else if (!this.embeddedViewRef) {\n      this.embeddedViewRef = this.viewContainer.createEmbeddedView(this.templateRef);\n    }\n  }\n}\n","import { ChangeDetectorRef, OnDestroy, Pipe, PipeTransform } from '@angular/core';\nimport { Subscription } from 'rxjs';\n\nimport { SubjectRolesProvider } from '../subject-roles.provider';\n\n@Pipe({name: 'hasRoles', pure: false})\nexport class HasRolesPipe implements PipeTransform, OnDestroy {\n\n  private hasRoles = null;\n\n  private sub: Subscription = null;\n\n  constructor(private ref: ChangeDetectorRef, private subject: SubjectRolesProvider) {\n  }\n\n  transform(roles: string | string[], rolesAsArg: string[]): boolean {\n    roles = rolesAsArg || roles as string[];\n    this.clear();\n    this.sub = this.subject.hasRolesAsync(roles).subscribe((hasRoles) => {\n      if (this.hasRoles !== hasRoles) {\n        this.hasRoles = hasRoles;\n        this.ref.markForCheck();\n      }\n    });\n    return this.hasRoles;\n  }\n\n  ngOnDestroy(): void {\n    this.clear();\n  }\n\n  private clear(): void {\n    this.hasRoles = null;\n    if (this.sub) {\n      this.sub.unsubscribe();\n      this.sub = null;\n    }\n  }\n}\n","import { ModuleWithProviders, NgModule, Provider } from '@angular/core';\nimport { StandardSubjectService, SubjectService } from '@ngx-security/core';\n\nimport { HasAnyRoleDirective } from './has-any-role/has-any-role.directive';\nimport { HasRoleDirective } from './has-role/has-role.directive';\nimport { HasRolePipe } from './has-role/has-role.pipe';\nimport { HasAnyRolePipe } from './has-any-role/has-any-role.pipe';\nimport { HasRolesPipe } from './has-roles/has-roles.pipe';\nimport { HasRolesDirective } from './has-roles/has-roles.directive';\nimport { StandardSubjectRolesProvider, SubjectRolesProvider } from './subject-roles.provider';\n\nexport interface SecurityRolesModuleConfig {\n  subject?: Provider;\n  subjectRoles?: Provider;\n}\n\n@NgModule({\n  declarations: [\n    HasAnyRoleDirective,\n    HasRoleDirective,\n    HasRolePipe,\n    HasAnyRolePipe,\n    HasRolesPipe,\n    HasRolesDirective\n  ],\n  exports: [\n    HasAnyRoleDirective,\n    HasRoleDirective,\n    HasRolePipe,\n    HasAnyRolePipe,\n    HasRolesPipe,\n    HasRolesDirective\n  ]\n})\nexport class SecurityRolesModule {\n\n  static forRoot(config: SecurityRolesModuleConfig = {}): ModuleWithProviders<SecurityRolesModule> {\n    return {\n      ngModule: SecurityRolesModule,\n      providers: [\n        config.subject || {provide: SubjectService, useClass: StandardSubjectService},\n        config.subjectRoles || {provide: SubjectRolesProvider, useClass: StandardSubjectRolesProvider}\n      ]\n    };\n  }\n\n  static forChild(config: SecurityRolesModuleConfig = {}): ModuleWithProviders<SecurityRolesModule> {\n    return {\n      ngModule: SecurityRolesModule,\n      providers: []\n    };\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":["i1.SubjectRolesProvider"],"mappings":"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"}