{"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/lib/roles.provider.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 { NgModule } from '@angular/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';\n\n@NgModule({\n  imports: [\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","import { EnvironmentProviders, makeEnvironmentProviders, Provider } from '@angular/core';\nimport { StandardSubjectService, SubjectService } from '@ngx-security/core';\n\nimport { StandardSubjectRolesProvider, SubjectRolesProvider } from './subject-roles.provider';\n\nexport interface SecurityRolesModuleConfig {\n  subject?: Provider;\n  subjectRoles?: Provider;\n}\n\nexport function provideSecurityRoles(config: SecurityRolesModuleConfig = {}): EnvironmentProviders {\n  return makeEnvironmentProviders([\n    config.subject || {provide: SubjectService, useClass: StandardSubjectService},\n    config.subjectRoles || {provide: SubjectRolesProvider, useClass: StandardSubjectRolesProvider}\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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"}