Basic Usage

Wildcard Permissions

Apache Shiro style wildcard permissions.

Enable wildcards in your config:

config/permissions.ts
defineConfig({
  // ...
  enableWildcardPermission: true,
})

Parts are separated by ., sub-parts by , and * matches anything:

await user.givePermissionTo('posts.*')

await user.can('posts.create') // true
await user.can('posts.edit.123') // true
await user.can('users.create') // false

await user.givePermissionTo('articles.view,edit')
await user.can('articles.edit') // true
await user.can('articles.delete') // false

await user.givePermissionTo('*') // everything

You can also use the matcher directly:

import { WildcardPermission } from '@eienjs/adonisjs-permission'

WildcardPermission.implies('posts.*', 'posts.create') // true
Wildcard checks load the model's permissions and compare them in memory. Keep permission names consistent.