*/ protected array $permissions = [ 'manage_catalog', 'manage_routes', 'manage_pricing', 'view_bookings', 'manage_bookings', 'view_payments', 'process_refunds', 'view_audit_log', 'manage_staff', 'manage_roles', 'view_customers', 'manage_settings', 'view_reports', ]; /** * @var array> */ protected array $roles = [ 'super_admin' => [ 'manage_catalog', 'manage_routes', 'manage_pricing', 'view_bookings', 'manage_bookings', 'view_payments', 'process_refunds', 'view_audit_log', 'manage_staff', 'manage_roles', 'view_customers', 'manage_settings', 'view_reports', ], 'admin' => [ 'manage_catalog', 'manage_routes', 'manage_pricing', 'view_bookings', 'manage_bookings', 'view_payments', 'process_refunds', 'view_audit_log', 'view_customers', 'manage_settings', 'view_reports', ], 'support' => [ 'view_bookings', 'view_payments', 'view_audit_log', 'view_customers', ], ]; public function run(): void { foreach ($this->permissions as $permission) { Permission::findOrCreate($permission, 'web'); } // WithoutModelEvents (used by DatabaseSeeder) suppresses the model // events Spatie's permission cache relies on to invalidate itself, // so the freshly created permissions above must be flushed manually. app(PermissionRegistrar::class)->forgetCachedPermissions(); foreach ($this->roles as $role => $permissions) { Role::findOrCreate($role, 'web')->syncPermissions($permissions); } } }