17.0.0 • Published 5 months ago

@ngx-security/permissions v17.0.0

Weekly downloads
13
License
MIT
Repository
github
Last release
5 months ago

ngx-security/permissions

Installation

npm install --save @ngx-security/core @ngx-security/permissions

Setup

Import SecurityCoreModule and SecurityPermissionsModule in app module.

@NgModule({
  imports: [
    BrowserModule,
    SecurityCoreModule.forRoot(),
    SecurityPermissionsModule.forRoot()
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}

Now you are ready to use it. See SecurityCoreModule for SubjectService implementation which provide authorities as permissions.

Usage

Structural directives

<p *isPermitted="'printer:xpc4000:*'">This should see users with printer:xpc4000:*</p>

Pipes

<p *ngIf="'printer:xpc4000:*' | isPermitted">This should see users with printer:xpc4000:*</p>

Pipes with poetry

<p *ngIf="'user' | isPermitted:'printer:xpc4000:*'">This should see users with printer:xpc4000:*</p>`

Advance setup

Implement custom SubjectPermissionsProvider class:

import { Injectable, OnDestroy } from '@angular/core';
import { BehaviorSubject, Observable } from 'rxjs';
import { SubjectPermissionsProvider } from '@ngx-security/permissions';

@Injectable()
export class MyPermissionsProvider extends SubjectPermissionsProvider implements OnDestroy {

    private permissions: BehaviorSubject<string[]> = new BehaviorSubject(['printer:xpc5000:print', 'printer:xpc4000:*', 'nas:timeCapsule,fritzbox:read']);

    permissions$: Observable<string[]> = this.permissions.asObservable();

    constructor() {
        super();
    }
    
    ngOnDestroy(): void {
        this.permissions.complete(); 
    }

    getPermissions(): string[] {
        return this.permissions.getValue();
    }
}

Import SecurityPermissionsModule in app module and set your custom SubjectPermissionsProvider.

@NgModule({
  imports: [
    BrowserModule,
    SecurityCoreModule.forRoot(),
    SecurityPermissionsModule.forRoot({
        subjectPermissions: { provide: SubjectPermissionsProvider, useClass: MyPermissionsProvider }
    })
  ],
  bootstrap: [AppComponent]
})
export class AppModule {
}
17.0.0

5 months ago

16.0.0

5 months ago

15.0.0

1 year ago

14.0.0

2 years ago

13.0.0

2 years ago

12.0.0

3 years ago

12.0.1

3 years ago

11.0.1

3 years ago

11.0.0

3 years ago

10.0.2

4 years ago

10.0.1

4 years ago

10.0.0

4 years ago

9.0.0

4 years ago

8.0.1

5 years ago

8.0.1-snapshot.0

5 years ago

8.0.0

5 years ago

1.0.0

6 years ago

0.0.1

6 years ago