Narcissistic, Perfectly Modest

    ngx-permission
    TypeScript icon, indicating that this package has built-in type declarations

    0.2.1 • Public • Published

    ngx permission

    Build Status codecov npm version devDependency Status GitHub issues GitHub stars GitHub license

    Table of contents

    About

    Angular 2 or Angular 4 implementation of angular-permission

    Installation

    Install through npm:

    npm install --save ngx-permission
    

    Then include in your apps module:

    import { NgModule } from '@angular/core';
    import { NgxPermissionModule } from 'ngx-permission';
     
    @NgModule({
      imports: [
        NgxPermissionModule
      ]
    })
    export class MyModule {}

    Define role and role validation function by RoleStoreService

    export class AppComponent {
      constructor(roleStoreService:RoleStoreService) {
        const adminRole: Role = {
          name: 'admin',
          validationFunction: () => false
        };
        const userRole: Role = {
          name: 'user',
          validationFunction: () => true //boolean or Promise<boolean>
        };
      
        roleStoreService.defineRole(adminRole);
        roleStoreService.defineRole(userRole);
        
        // or roleStoreService.defineManyRoles([adminRole, userRole])
      }
    }

    Now you can use onlyForRoles and exceptRoles directives in your components:

    import { Component } from '@angular/core';
     
    @Component({
      template: `<div *onlyForRoles="['user']">user can see this</div>
                 <div *onlyForRoles="['admin']">user can't see this</div>`
    })
    export class MyComponent {}

    Router

    set canActivate property RouterConnector class

    {
      path: 'about',
      component: AboutComponent,
      data: {
        ngxPermissions: {
          only: ['user']
        }
      },
      canActivate: [RouterConnector]
    },
    {
      path: 'secret',
      component: SectetDataComponent,
      data: {
        ngxPermissions: {
          exept: ['user'],
          redirectTo: 'about'
        }
      },
      canActivate: [RouterConnector]
    }
    

    Usage without a module bundler

    <script src="node_modules/ngx-permission/bundles/ngx-permission.umd.js"></script>
    <script>
        // everything is exported ngxPermission namespace
    </script>
    

    Documentation

    All documentation is auto-generated from the source via compodoc and can be viewed here: https://TekVanDo.github.io/ngx-permission/docs/

    Roadmap

    • implements forRoot and forChild functions
    • add support for observables
    • implements permissions
    • improve documentation
    • better tests coverage
    • nested roles

    Development

    Prepare your environment

    • Install Node.js and NPM
    • Install local dev dependencies: npm install while current directory is this repo

    Development server

    Run npm start to start a development server on port 8000 with auto reload + tests.

    Testing

    Run npm test to run tests once or npm run test:watch to continually run tests.

    Release

    • Bump the version in package.json (once the module hits 1.0 this will become automatic)
    npm run release

    License

    MIT

    Install

    npm i ngx-permission

    DownloadsWeekly Downloads

    346

    Version

    0.2.1

    License

    MIT

    Last publish

    Collaborators

    • tekvando