registerResource(Announcement::class, CrudPermission::cases()); $this->registerResource(Dump::class, CrudPermission::cases()); $this->registerResource(Feature::class, CrudPermission::cases()); $this->registerResource(FeaturedTheme::class, CrudPermission::cases()); // Auth Resources $this->registerResource(Permission::class, [CrudPermission::VIEW]); $this->registerResource(Prohibition::class, [CrudPermission::VIEW, CrudPermission::UPDATE]); $this->registerResource(Role::class, CrudPermission::cases()); $this->registerResource(Sanction::class, CrudPermission::cases()); $this->registerResource(User::class, $extendedCrudPermissions); // List Resources $this->registerResource(ExternalEntry::class, CrudPermission::cases()); $this->registerResource(ExternalProfile::class, CrudPermission::cases()); $this->registerResource(Playlist::class, CrudPermission::cases()); $this->registerResource(PlaylistTrack::class, CrudPermission::cases()); // User Resources $this->registerResource(Like::class, CrudPermission::cases()); $this->registerResource(Notification::class, CrudPermission::cases()); $this->registerResource(Submission::class, CrudPermission::cases()); $this->registerResource(WatchHistory::class, CrudPermission::cases()); // Wiki Resources $this->registerResource(Anime::class, $extendedCrudPermissions); $this->registerResource(AnimeTheme::class, $extendedCrudPermissions); $this->registerResource(AnimeThemeEntry::class, $extendedCrudPermissions); $this->registerResource(Artist::class, $extendedCrudPermissions); $this->registerResource(Audio::class, $extendedCrudPermissions); $this->registerResource(Group::class, $extendedCrudPermissions); $this->registerResource(ExternalResource::class, $extendedCrudPermissions); $this->registerResource(Image::class, $extendedCrudPermissions); $this->registerResource(Page::class, $extendedCrudPermissions); $this->registerResource(Performance::class, $extendedCrudPermissions); $this->registerResource(Series::class, $extendedCrudPermissions); $this->registerResource(Song::class, $extendedCrudPermissions); $this->registerResource(Studio::class, $extendedCrudPermissions); $this->registerResource(Synonym::class, $extendedCrudPermissions); $this->registerResource(Video::class, $extendedCrudPermissions); $this->registerResource(VideoScript::class, $extendedCrudPermissions); // Special Permissions $this->registerAbilities(array_column(SpecialPermission::cases(), 'value')); } /** * Register resource abilities. */ protected function registerResource(string $resource, array $abilities): void { foreach ($abilities as $ability) { Permission::findOrCreate($ability->format($resource)); } } /** * Configure role with abilities. * * @param string[] $abilities */ protected function registerAbilities(array $abilities): void { foreach ($abilities as $ability) { Permission::findOrCreate($ability); } } }