Files
animethemes-server/database/seeders/Auth/Role/WikiEditorRoleSeeder.php
T
paranarimasu 6015dcbbbf refactor: migration from laravel-enum package to native php enums (#585)
* refactor: migration from laravel-enum package to native php enums

* style: fix StyleCI findings
2023-06-09 14:29:10 -05:00

86 lines
3.0 KiB
PHP

<?php
declare(strict_types=1);
namespace Database\Seeders\Auth\Role;
use App\Enums\Auth\CrudPermission;
use App\Enums\Auth\ExtendedCrudPermission;
use App\Enums\Auth\SpecialPermission;
use App\Models\Auth\Role;
use App\Models\Document\Page;
use App\Models\List\Playlist;
use App\Models\List\Playlist\PlaylistTrack;
use App\Models\Wiki\Anime;
use App\Models\Wiki\Anime\AnimeSynonym;
use App\Models\Wiki\Anime\AnimeTheme;
use App\Models\Wiki\Anime\Theme\AnimeThemeEntry;
use App\Models\Wiki\Artist;
use App\Models\Wiki\Audio;
use App\Models\Wiki\ExternalResource;
use App\Models\Wiki\Image;
use App\Models\Wiki\Series;
use App\Models\Wiki\Song;
use App\Models\Wiki\Studio;
use App\Models\Wiki\Video;
use App\Models\Wiki\Video\VideoScript;
/**
* Class WikiEditorRoleSeeder.
*/
class WikiEditorRoleSeeder extends RoleSeeder
{
/**
* Run the database seeds.
*
* @return void
*
* @noinspection PhpMissingParentCallCommonInspection
*/
public function run(): void
{
/** @var Role $role */
$role = Role::findOrCreate('Wiki Editor');
$extendedCrudPermissions = array_merge(
CrudPermission::cases(),
ExtendedCrudPermission::cases(),
);
// List Resources
$this->configureResource($role, Playlist::class, $extendedCrudPermissions);
$this->configureResource($role, PlaylistTrack::class, $extendedCrudPermissions);
$extendedCrudPermissions = array_merge(
CrudPermission::cases(),
[
ExtendedCrudPermission::RESTORE,
],
);
// Wiki Resources
$this->configureResource($role, Anime::class, $extendedCrudPermissions);
$this->configureResource($role, AnimeSynonym::class, $extendedCrudPermissions);
$this->configureResource($role, AnimeTheme::class, $extendedCrudPermissions);
$this->configureResource($role, AnimeThemeEntry::class, $extendedCrudPermissions);
$this->configureResource($role, Artist::class, $extendedCrudPermissions);
$this->configureResource($role, Audio::class, [CrudPermission::VIEW, CrudPermission::UPDATE]);
$this->configureResource($role, ExternalResource::class, $extendedCrudPermissions);
$this->configureResource($role, Image::class, $extendedCrudPermissions);
$this->configureResource($role, Page::class, $extendedCrudPermissions);
$this->configureResource($role, Series::class, $extendedCrudPermissions);
$this->configureResource($role, Song::class, $extendedCrudPermissions);
$this->configureResource($role, Studio::class, $extendedCrudPermissions);
$this->configureResource($role, Video::class, [CrudPermission::VIEW, CrudPermission::UPDATE]);
$this->configureResource($role, VideoScript::class, [CrudPermission::VIEW]);
// Special Permissions
$this->configureAbilities($role, [SpecialPermission::VIEW_NOVA->value]);
$role->color = '#2E5A88';
$role->priority = 100000;
$role->save();
}
}