Socket
Book a DemoInstallSign in
Socket

egg-userrole

Package Overview
Dependencies
Maintainers
6
Versions
10
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

egg-userrole

user role plugin for egg

2.1.0
latest
Source
npmnpm
Version published
Weekly downloads
190
-46.18%
Maintainers
6
Weekly downloads
 
Created
Source

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

Keywords

egg

FAQs

Package last updated on 14 Dec 2018

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

About

Packages

Stay in touch

Get open source security insights delivered straight into your inbox.

  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc

U.S. Patent No. 12,346,443 & 12,314,394. Other pending.