{"version":3,"file":"sowatech-shared-access-for-role.mjs","sources":["../../../projects/shared/access-for-role/role-group.ts","../../../projects/shared/access-for-role/access-for-role.service.ts","../../../projects/shared/access-for-role/access-for-role.component.ts","../../../projects/shared/access-for-role/restrict-edit-to-roles.component.ts","../../../projects/shared/access-for-role/visible-for-role.component.ts","../../../projects/shared/access-for-role/access-for-role.directive.ts","../../../projects/shared/access-for-role/restrict-edit-to-roles.directive.ts","../../../projects/shared/access-for-role/visible-for-role.directive.ts","../../../projects/shared/access-for-role/access-for-role.module.ts","../../../projects/shared/access-for-role/sowatech-shared-access-for-role.ts"],"sourcesContent":["export class RoleGroup {\r\n\r\n    public roles: string[] = [];\r\n\r\n    constructor(roles: string | string[]) {\r\n        this.roles = (typeof(roles) === 'string') ? roles.split(',') : roles;\r\n    }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { RoleGroup } from './role-group';\r\n\r\n@Injectable({\r\n    providedIn: 'root'\r\n})\r\nexport class AccessForRoleService {\r\n    constructor(\r\n        private session: SharedSession,\r\n        private logger: LoggerService\r\n    ) { }\r\n\r\n    public sessionHasRole(roleGroups: RoleGroup[]): boolean {\r\n        const sessionHasRoles = this.session && this.session.Data && this.session.Data.roles;\r\n        if (!sessionHasRoles) {\r\n            this.logger.warn('keine Rollen in der Session vorhanden');\r\n            return false;\r\n        }\r\n        return roleGroups.every(roleGroup => this.session.Data.roles.some(item => roleGroup.roles.includes(item)));\r\n    }\r\n}\r\n","import { Directive } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleService } from './access-for-role.service';\r\nimport { RoleGroup } from './role-group';\r\n\r\n// _roles erwartet entweder einen ;-Separierten string mit ,-Separiert roleGroups, ein Array von Roles, oder ein Array von Role-Arrays\r\n// in sessionHasRole wird in der aktuellen Session überprüft, ob mindestens eine Rolle aus jeder Gruppe vorhanden ist\r\n\r\n@Directive() // https://angular.io/guide/migration-undecorated-classes#why-is-this-migration-necessary\r\nexport abstract class AccessForRoleComponent {\r\n\r\n    public set _roles(value: string | string[] | string[][]) {\r\n        const groups: RoleGroup[] = [];\r\n        if (value == null || value === undefined || !value[0])\r\n            this.roleGroups = groups;\r\n\r\n        else if (value && typeof (value) === 'string')\r\n            (value as string).split(';').forEach(group => groups.push(new RoleGroup(group)));\r\n\r\n        else if (value[0] && typeof (value[0]) === 'string')\r\n            groups.push(new RoleGroup(value as string[]));\r\n\r\n        else if (value[0][0] && typeof (value[0][0]) === 'string')\r\n            (value as string[][]).forEach(roles => groups.push(new RoleGroup(roles)));\r\n\r\n        this.roleGroups = groups;\r\n    }\r\n\r\n    public get sessionHasRole(): boolean {\r\n        return this.accessForRoleService.sessionHasRole(this.roleGroups);\r\n    }\r\n\r\n    private roleGroups: RoleGroup[] = [];\r\n\r\n    constructor(\r\n        public session: SharedSession,\r\n        protected logger: LoggerService,\r\n        protected accessForRoleService: AccessForRoleService\r\n    ) { }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleComponent } from './access-for-role.component';\r\nimport { AccessForRoleService } from './access-for-role.service';\r\n\r\n//Bsp. <restrict-edit-to-roles [roles]=\"role1,role2;license1,license2\"></restrict-edit-to-roles>\r\n//Bsp. <restrict-edit-to-roles [roles]=\"['role1','role2']\"></restrict-edit-to-roles>\r\n//Bsp. <restrict-edit-to-roles [roles]=\"[['role1','role2'],['license1','license2']]\"></restrict-edit-to-roles>\r\n@Component({\r\n    selector: 'restrict-edit-to-roles',\r\n    template: `\r\n        <div [ngClass]=\"sessionHasRole ? '': 'no-edit'\">\r\n            <ng-content></ng-content>\r\n        </div>`,\r\n    standalone: false\r\n})\r\nexport class RestrictEditToRolesComponent extends AccessForRoleComponent {\r\n\r\n    @Input('roles') public set _editableRoles(value: string | string[] | string[][]) {\r\n        this._roles = value;\r\n    }\r\n\r\n    public get canEdit(): boolean {\r\n        return this.sessionHasRole;\r\n    }\r\n\r\n    constructor(\r\n        session: SharedSession,\r\n        logger: LoggerService,\r\n        accessForRolesService: AccessForRoleService\r\n    ) {\r\n        super(session, logger, accessForRolesService);\r\n    }\r\n}\r\n","import { Component, Input } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleComponent } from './access-for-role.component';\r\nimport { AccessForRoleService } from './access-for-role.service';\r\n\r\n//Bsp. <visible-for-role [roles]=\"role1,role2;license1,license2\"></visible-for-role>\r\n//Bsp. <visible-for-role [roles]=\"['role1','role2']\"></visible-for-role>\r\n//Bsp. <visible-for-role [roles]=\"[['role1','role2'],['license1','license2']]\"></visible-for-role>\r\n\r\n@Component({\r\n    selector: 'visible-for-role',\r\n    template: `\r\n        @if (sessionHasRole) {\r\n          <ng-content></ng-content>\r\n        }`,\r\n    standalone: false\r\n})\r\n\r\nexport class VisibleForRoleComponent extends AccessForRoleComponent {\r\n\r\n    @Input('roles') public set _visibleRoles(value: string | string[] | string[][]) {\r\n        this._roles = value;\r\n    }\r\n\r\n    public get isVisible(): boolean {\r\n        return this.sessionHasRole;\r\n    }\r\n\r\n    constructor(\r\n        session: SharedSession,\r\n        logger: LoggerService,\r\n        accessForRolesService: AccessForRoleService\r\n    ) {\r\n        super(session, logger, accessForRolesService);\r\n    }\r\n}\r\n","import { Directive, ElementRef, OnInit } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleService } from './access-for-role.service';\r\nimport { RoleGroup } from './role-group';\r\n\r\n@Directive()\r\nexport abstract class AccessForRoleDirective implements OnInit {\r\n\r\n    public set _roles(value: string | string[] | string[][]) {\r\n        const groups: RoleGroup[] = [];\r\n        if (value == null || value === undefined || !value[0])\r\n            this.roleGroups = groups;\r\n\r\n        else if (value && typeof (value) === 'string')\r\n            (value as string).split(';').forEach(group => groups.push(new RoleGroup(group)));\r\n\r\n        else if (value[0] && typeof (value[0]) === 'string')\r\n            groups.push(new RoleGroup(value as string[]));\r\n\r\n        else if (value[0][0] && typeof (value[0][0]) === 'string')\r\n            (value as string[][]).forEach(roles => groups.push(new RoleGroup(roles)));\r\n\r\n        this.roleGroups = groups;\r\n    }\r\n\r\n    protected roleGroups: RoleGroup[] = [];\r\n    protected abstract class: string;\r\n\r\n    private nativeElement: HTMLElement;\r\n\r\n    constructor(\r\n        el: ElementRef,\r\n        protected session: SharedSession,\r\n        protected logger: LoggerService,\r\n        protected accessForRoleService: AccessForRoleService\r\n    ) {\r\n        this.nativeElement = el.nativeElement;\r\n    }\r\n\r\n    ngOnInit() {\r\n        if (this.sessionHasRole)\r\n            this.removeClass(this.class);\r\n        else\r\n            this.addClass(this.class);\r\n    }\r\n\r\n    private get sessionHasRole(): boolean {\r\n        return this.accessForRoleService.sessionHasRole(this.roleGroups);\r\n    }\r\n\r\n    private removeClass(className: string) {\r\n        if (!this.nativeElement.classList)\r\n            throw new Error('Die Variable nativeElement fehlt das Klassen Attribut. Kann die Klasse nicht entfernen: ' + className);\r\n        this.nativeElement.classList.remove(className);\r\n    }\r\n\r\n    private addClass(className: string) {\r\n        if (!this.nativeElement.classList)\r\n            throw new Error('Die Variable nativeElement fehlt das Klassen Attribut. Kann die Klasse nicht hinzufügen: ' + className);\r\n\r\n        if (!this.nativeElement.classList.contains(className)) this.nativeElement.classList.add(className);\r\n    }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleDirective } from './access-for-role.directive';\r\nimport { AccessForRoleService } from './access-for-role.service';\r\n\r\n//Bsp. [restrict-edit-to-roles]=\"role1,role2;license1,license2\"\r\n//Bsp. [restrict-edit-to-roles]=\"['role1','role2']\"\r\n//Bsp. [restrict-edit-to-roles]=\"[['role1','role2'],['license1','license2']]\"\r\n\r\n@Directive({\r\n    selector: '[restrict-edit-to-roles]',\r\n    standalone: false\r\n})\r\nexport class RestrictEditToRolesDirective extends AccessForRoleDirective implements OnInit {\r\n\r\n    protected class = 'no-edit';\r\n\r\n    @Input('restrict-edit-to-roles') public set _editableForRoles(value: string | string[] | string[][]) {\r\n        this._roles = value;\r\n    }\r\n\r\n    constructor(\r\n        el: ElementRef,\r\n        session: SharedSession,\r\n        logger: LoggerService,\r\n        accessForRoleService: AccessForRoleService\r\n    ) {\r\n        super(el, session, logger, accessForRoleService);\r\n    }\r\n\r\n    override ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n}\r\n","import { Directive, ElementRef, Input, OnInit } from '@angular/core';\r\nimport { LoggerService } from '@sowatech/shared/logger';\r\nimport { SharedSession } from '@sowatech/shared/session';\r\n\r\nimport { AccessForRoleDirective } from './access-for-role.directive';\r\nimport { AccessForRoleService } from './access-for-role.service';\r\n\r\n//Bsp. [visible-for-role]=\"'role1,role2;license1,license2'\"\r\n//Bsp. [visible-for-role]=\"['role1','role2']\"\r\n//Bsp. [visible-for-role]=\"[['role1','role2'],['license1','license2']]\"\r\n\r\n@Directive({\r\n    selector: '[visible-for-role]',\r\n    standalone: false\r\n})\r\nexport class VisibleForRoleDirective extends AccessForRoleDirective implements OnInit {\r\n\r\n    @Input('visible-for-role') public set _visibleForRoles(value: string | string[] | string[][]) {\r\n        this._roles = value;\r\n    }\r\n\r\n    constructor(\r\n        el: ElementRef,\r\n        session: SharedSession,\r\n        logger: LoggerService,\r\n        accessForRoleService: AccessForRoleService\r\n    ) {\r\n        super(el, session, logger, accessForRoleService);\r\n    }\r\n\r\n    override ngOnInit() {\r\n        super.ngOnInit();\r\n    }\r\n\r\n    protected class = 'hidden';\r\n}\r\n","import { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n\r\nimport { RestrictEditToRolesComponent } from './restrict-edit-to-roles.component';\r\nimport { RestrictEditToRolesDirective } from './restrict-edit-to-roles.directive';\r\nimport { VisibleForRoleComponent } from './visible-for-role.component';\r\nimport { VisibleForRoleDirective } from './visible-for-role.directive';\r\n\r\n@NgModule({\r\n  imports: [\r\n    CommonModule,\r\n    FormsModule,\r\n  ],\r\n  declarations: [\r\n    RestrictEditToRolesComponent,\r\n    RestrictEditToRolesDirective,\r\n    VisibleForRoleComponent,\r\n    VisibleForRoleDirective,\r\n  ],\r\n  exports: [\r\n    RestrictEditToRolesComponent,\r\n    RestrictEditToRolesDirective,\r\n    VisibleForRoleComponent,\r\n    VisibleForRoleDirective,\r\n  ]\r\n})\r\nexport class AccessForRoleModule { }\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './index';\n"],"names":["i3.AccessForRoleService"],"mappings":"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"}