forgetCachedPermissions(); $permissions = collect(PermissionEnum::cases()) ->mapWithKeys(fn (PermissionEnum $permission) => [ $permission->value => Permission::findOrCreate($permission->value, 'web'), ]); $registrar->forgetCachedPermissions(); foreach (RoleEnum::cases() as $role) { $roleModel = Role::findOrCreate($role->value, 'web'); $roleModel->syncPermissions( collect($role->permissions()) ->map(fn (PermissionEnum $permission) => $permissions[$permission->value]) ->all() ); } Role::query() ->where('guard_name', 'web') ->whereNotIn('name', RoleEnum::values()) ->each(fn (Role $role) => $role->delete()); Permission::query() ->where('guard_name', 'web') ->whereNotIn('name', PermissionEnum::values()) ->each(fn (Permission $permission) => $permission->delete()); $registrar->forgetCachedPermissions(); } }