6.4.0 • Published 4 years ago

loopback-acl-extension v6.4.0

Weekly downloads
5
License
MIT
Repository
github
Last release
4 years ago

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)

6.3.0

4 years ago

6.4.0

4 years ago

6.2.0

4 years ago

6.1.2

4 years ago

6.1.0

4 years ago

6.1.1

4 years ago

6.0.0

4 years ago

5.20.0

4 years ago

5.19.0

4 years ago

5.18.0

4 years ago

5.17.0

4 years ago

5.16.0

4 years ago

5.15.0

4 years ago

5.14.0

4 years ago

5.13.6

4 years ago

5.13.5

4 years ago

5.13.4

4 years ago

5.13.2

4 years ago

5.13.1

4 years ago

5.13.0

4 years ago

5.12.0

4 years ago

5.11.0

4 years ago

5.10.0

4 years ago

5.9.0

4 years ago

5.8.0

4 years ago

5.6.0

4 years ago

5.5.0

4 years ago

5.4.0

4 years ago

5.3.0

4 years ago

5.2.0

4 years ago

5.1.0

4 years ago

5.0.0

4 years ago

4.2.0

4 years ago

4.1.0

4 years ago

4.0.0

4 years ago

3.0.0

4 years ago

2.1.0

4 years ago

1.3.0

4 years ago

2.0.0

4 years ago

1.2.0

4 years ago

1.1.0

4 years ago

1.0.0

4 years ago

0.5.0

4 years ago

0.6.0

4 years ago

0.4.0

4 years ago

0.3.0

4 years ago

0.2.0

4 years ago

0.1.0

4 years ago