exegesis-plugin-roles
v2.0.2
Published
Role-based authorization for Exegesis.
Downloads
296
Maintainers
Readme
exegesis-plugin-roles
Description
Adds support for the "x-exegesis-roles" vendor extension, which adds support for restricting which operations are available to which users after they have been authenticated. Authenticators can optionally return "roles" for a user. "x-exegesis-roles" can be specified either as an array of "role" strings, or as an array of such arrays.
For example:
x-exegesis-roles:
- a
- b
would only allow access to an operation if a user has both the 'a' and 'b' role, or:
x-exegesis-roles:
- [a]
- [b, c]
would only allow access to an operation if a user has the 'a' role, or has both the 'b' and 'c' role.
"x-exegesis-roles" can be defined on the root OpenAPI object, in which case all operations in the document will require those roles. This can be overridden by specifying "x-exegesis-roles" in an individual operation. An empty array indicates a user requires no roles:
x-exegesis-roles: []
If "x-exegesis-roles" is defined on an operation which has no security requirements defined, this will throw an error.
Roles do not apply to security schemes with the "oauth2" type; scopes apply there instead.
Allowed in:
Installation
npm install exegesis-plugin-roles
Example
Add this to your Exegesis options:
import exegesisRolesPlugin from 'exegesis-plugin-roles';
options = {
plugins: [
exegesisRolesPlugin({
// List of all allowed roles. If you try to use any roles that
// aren't in this list in your document, an error will be thrown.
allowedRoles: ['user', 'admin', 'ops']
})
]
};
In your OpenAPI 3.x document:
paths:
'/kittens':
get:
description: Get a list of kittens
security:
- basicAuth: []
- oauth: ['readOnly']
post:
description: Add a new kitten
security:
- basicAuth: []
- oauth: ['readWrite']
x-exegesis-roles: ['admin'] # Only users with the "admin" role may call this.
The "get" operation can only be executed if the request matches one of the two listed security requirements. The "post" operation can only be executed if the security requirements are matched, and the current "user" has the "admin" role.
Copyright 2018 Jason Walton