Node Promiscuous Modules

    egg-userrole

    2.1.0 • Public • Published

    egg-userrole

    NPM version build status Test coverage David deps Known Vulnerabilities npm download

    Provide dynamic roles based authorisation. Use koa-roles.

    Install

    $ npm i egg-userrole --save

    Usage

    // {app_root}/config/plugin.js
    exports.userrole = {
      package: 'egg-userrole',
    };

    Recommend to use along with custom userservice plugin (which provide ctx.user).

    see egg-userservice for more info.

    Build-in

    Roles build-in failureHandler:

    function failureHandler(ctx, action) {
      const message = 'Forbidden, required role: ' + action;
      if (ctx.acceptJSON) {
        ctx.body = {
          message: message,
          stat: 'deny',
        };
      } else {
        ctx.status = 403;
        ctx.body = message;
      }
    };

    Build-in user role define:

    app.role.use('user', ctx => !!ctx.user);

    How to custom failureHandler

    Define app.role.failureHandler(action) method in config/role.js

    • app/extend/context.js
    // {app_root}/config/role.js or {framework_root}/config/role.js
    module.exports = app => {
      app.role.failureHandler = function(ctx, action) {
        if (ctx.acceptJSON) {
          ctx.body = { target: loginURL, stat: 'deny' };
        } else {
          ctx.realStatus = 200;
          ctx.redirect(loginURL);
        }
      };
    }

    How to custom role

    // {app_root}/config/role.js or {framework_root}/config/role.js
    module.exports = function(app) {
      app.role.use('admin', ctx => {
        return ctx.user && ctx.user.isAdmin;
      });
     
      app.role.use('can write', async ctx => {
        const post = await ctx.service.post.fetch(ctx.request.body.id);
        return ctx.user.name === post.author;
      });
    };

    Questions & Suggestions

    Please open an issue here.

    License

    MIT

    Install

    npm i egg-userrole

    DownloadsWeekly Downloads

    99

    Version

    2.1.0

    License

    MIT

    Unpacked Size

    7.24 kB

    Total Files

    7

    Last publish

    Collaborators

    • atian25
    • dead_horse
    • fengmk2
    • popomore
    • shaoshuai0102
    • wanghx