Advanced

Events

React to roles and permissions being attached or detached.

Events are disabled by default:

config/permissions.ts
defineConfig({
  // ...
  events: { enabled: true },
})
EventPayload
permission:role_attachedRoleAttachedEvent
permission:role_detachedRoleDetachedEvent
permission:permission_attachedPermissionAttachedEvent
permission:permission_detachedPermissionDetachedEvent

Every payload has model, the role / permission (model or name) and the teamId.

start/events.ts
import emitter from '@adonisjs/core/services/emitter'

emitter.on('permission:role_attached', (event) => {
  console.log(`Role ${event.role} attached to`, event.model.$primaryKeyValue)
})