loopback-acl-extension
TypeScript icon, indicating that this package has built-in type declarations

6.4.0 • Public • Published

loopback-acl-extension

Creating User, Role, Permission models and repositories and crud controllers in any application is a repetitive and futile task.

Using this extension you can bind them to your application using a simple and optional configurations.

Installation

npm i --save loopback-history-extension
npm i --save loopback-authorization-extension
npm i --save loopback-acl-extension

Usage

Follow these steps to add acl extension to your loopback4 application

  1. Define your Relational and Cache dataSources
  2. Add ACLMixin to your application
  3. Bind ACLRestServer

Now, let's try:


Step 1 (Define DataSource)

Bind your dataSources you want to use for acl tables using bindRelationalDataSource and bindCacheDataSource

We need two dataSource, one for relational models, and one for cache models

  1. Relational Models: CRUD
    1. User
    2. Role
    3. Permission
    4. UserRole
    5. RolePermission
  2. Cache Models: Key-Value
    1. Session
    2. Code

See this example of binding relational dataSource:

import { bindRelationalDataSource } from "loopback-authorization-extension";
 
@bindRelationalDataSource()
export class MySqlDataSource extends juggler.DataSource {
    static dataSourceName = "MySQL";
 
    constructor(
        @inject("datasources.config.MySQL", { optional: true })
        dsConfig: object = config
    ) {
        super(dsConfig);
    }
}

See this example of binding cache dataSource:

import { bindCacheDataSource } from "loopback-acl-extension";
 
@bindCacheDataSource()
export class RedisDataSource extends juggler.DataSource {
    static dataSourceName = "Redis";
 
    constructor(
        @inject("datasources.config.Redis", { optional: true })
        dsConfig: object = config
    ) {
        super(dsConfig);
    }
}

Step 2,3 (Application Mixin)

Edit your application.ts file:

import { AuthorizationMixin } from "loopback-authorization-extension";
import { ACLMixin, ACLRestServer, ACLGQLServer } from "loopback-acl-extension";
 
export class TestApplication extends AuthorizationMixin(
    ACLMixin(BootMixin(ServiceMixin(RepositoryMixin(Application))))
) {
    constructor(options: ApplicationConfig = {}) {
        super(options);
 
        // ...
 
        // Bind servers
        this.server(ACLRestServer);
        this.server(ACLGQLServer);
    }
}

Contributions

License

This project is licensed under the MIT license.
Copyright (c) KoLiBer (koliberr136a1@gmail.com)

Package Sidebar

Install

npm i loopback-acl-extension

Weekly Downloads

3

Version

6.4.0

License

MIT

Unpacked Size

252 kB

Total Files

139

Last publish

Collaborators

  • koliber