self::PERMISSIONS, 'admin' => [ 'users.view', 'users.create', 'users.update', 'users.delete', 'roles.view', 'roles.assign', 'dashboard.view', 'audit.view', ], 'manager' => [ 'users.view', 'users.update', 'dashboard.view', ], 'user' => [ 'dashboard.view', ], ]; public function run(): void { // Sanctum SPA (cookie) requests authenticate via the 'web' session // guard, so roles/permissions must be registered under 'web' to be // visible to $user->can()/hasRole() during normal API requests. foreach (self::PERMISSIONS as $permission) { Permission::findOrCreate($permission, 'web'); } foreach (self::ROLE_PERMISSIONS as $role => $permissions) { Role::findOrCreate($role, 'web')->syncPermissions($permissions); } } }