Getting Started
Introduction
Associate Lucid models with roles and permissions in AdonisJS v7.
@eienjs/adonisjs-permission lets you manage roles and permissions stored in your database and attach them to any Lucid model (usually User). It is inspired by Laravel Permission by Spatie and built for AdonisJS v7 and Lucid.
await user.givePermissionTo('edit articles')
await user.assignRole('writer')
await user.can('edit articles') // true
await user.hasRole('writer') // true
Features
- Roles and permissions as regular Lucid models you own and can extend.
- Direct permissions, permissions via roles, or both.
- Multiple guards (
web,api, ...). - Teams / multi-tenancy support.
- Apache Shiro style wildcard permissions (
posts.*). - Super-Admin bypass.
- Route middlewares:
role,permission,roleOrPermission. - Edge tags:
@can,@cannot,@role,@hasrole. - Primary keys of any kind:
increments,bigIncrementsoruuid. - Optional events, in-memory cache and a config based catalog you can sync with Ace commands.
Requirements
- Node.js >= 24
@adonisjs/core^7.6@adonisjs/lucid^22.4luxon^3.4
