Skip to content

TekVanDo/ngx-permission

Repository files navigation

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