Basic Usage
Middleware
Protect routes with role and permission middlewares.
node ace configure registers three named middlewares in start/kernel.ts:
start/kernel.ts
export const middleware = router.named({
// ...
role: () => import('@eienjs/adonisjs-permission/middleware/role_middleware'),
permission: () => import('@eienjs/adonisjs-permission/middleware/permission_middleware'),
roleOrPermission: () => import('@eienjs/adonisjs-permission/middleware/role_or_permission_middleware'),
})
Use them after middleware.auth():
start/routes.ts
import router from '@adonisjs/core/services/router'
import { middleware } from '#start/kernel'
router
.post('projects', [ProjectsController, 'store'])
.use([
middleware.auth(),
middleware.permission({ permissions: ['publish projects', 'edit projects'] }),
])
router
.get('admin', [AdminController, 'index'])
.use([middleware.auth(), middleware.role({ roles: ['admin', 'manager'] })])
router
.get('reports', [ReportsController, 'index'])
.use([
middleware.auth(),
middleware.roleOrPermission({ roleOrPermission: ['administrator', 'view reports'] }),
])
Options
| Middleware | Option | Description |
|---|---|---|
role | roles | Role(s). Passes if the user has any. |
permission | permissions | Permission(s). Passes if the user has any. |
roleOrPermission | roleOrPermission | Passes if the user has any of the roles or permissions. |
Values can be an array or a string separated by | (e.g. 'admin|manager'). All of them also accept an optional guard.
If there is no authenticated user, the user lacks the required access, or the user model does not use HasAuthorizable, a 403 E_PERMISSION_UNAUTHORIZED_ACCESS is thrown.
