@ngx-security/roles
Version:
Angular Security Roles Module
1 lines • 22.6 kB
Source Map (JSON)
{"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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"}