:art: modify travis yml for test coverage
1 file changed
tree: 9a3e98de58c31507b9914914e572cc885a2befbc
  1. app/
  2. config/
  3. examples/
  4. test/
  5. .eslintrc.json
  6. .gitignore
  7. .travis.yml
  8. LICENSE
  9. package-lock.json
  10. package.json
  11. README.md
README.md

Egg-Authz

Build Status codecov Go Report Card GoDoc Join the chat at https://gitter.im/gin-gonic/gin

Egg-Authz is an authorization middleware for Egg, it's based on https://github.com/casbin/node-casbin.

Installation

npm install koa-authz

Then create a file in middleware directory to import the module.

// app/middleware/authz.js
module.exports = require('koa-authz')
// config/config.default.js
const { Enforcer } = require('casbin')
module.exports = {
  middleware: [ 'authz' ],
  authz: {
    enable: true,
    newEnforcer: async() => {
      // load the casbin model and policy from files, database is also supported.
      const enforcer = await Enforcer.newEnforcer('authz_model.conf', 'authz_policy.csv')
      return enforcer
    }
  }
}

Then enable the middleware in yout config files.

Documentation

The authorization determines a request based on {subject, object, action}, which means what subject can perform what action on what object. In this plugin, the meanings are:

  1. subject: the logged-on user name
  2. object: the URL path for the web resource like “dataset1/item1”
  3. action: HTTP method like GET, POST, PUT, DELETE, or the high-level actions you defined like “read-file”, “write-blog”

For how to write authorization policy and other details, please refer to the Casbin's documentation.

Getting Help

License

This project is under MIT License. See the LICENSE file for the full license text.