mirror of
https://github.com/AnimeThemes/animethemes-server.git
synced 2026-07-11 01:24:46 +02:00
feat(auth): adding patron role with new permission to bypass feature flags (#542)
* feat(auth): adding patron role with new permission to bypass feature flags * style: fix StyleCI finding * fix: wiki editors shouldn't have extended CRUD permissions
This commit is contained in:
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Enums\Auth;
|
||||
|
||||
use App\Enums\BaseEnum;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
/**
|
||||
* Class CrudPermissions.
|
||||
*
|
||||
* @method static static CREATE()
|
||||
* @method static static DELETE()
|
||||
* @method static static UPDATE()
|
||||
* @method static static VIEW()
|
||||
*/
|
||||
class CrudPermission extends BaseEnum
|
||||
{
|
||||
public const CREATE = 'create';
|
||||
|
||||
public const DELETE = 'delete';
|
||||
|
||||
public const UPDATE = 'update';
|
||||
|
||||
public const VIEW = 'view';
|
||||
|
||||
/**
|
||||
* Format permission name for model.
|
||||
*
|
||||
* @param string $modelClass
|
||||
* @return string
|
||||
*/
|
||||
public function format(string $modelClass): string
|
||||
{
|
||||
return Str::of($this->value)
|
||||
->append(class_basename($modelClass))
|
||||
->snake(' ')
|
||||
->__toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Enums\Auth;
|
||||
|
||||
/**
|
||||
* Class ExtendedCrudPermission.
|
||||
*
|
||||
* @method static static FORCE_DELETE()
|
||||
* @method static static RESTORE()
|
||||
*/
|
||||
final class ExtendedCrudPermission extends CrudPermission
|
||||
{
|
||||
public const FORCE_DELETE = 'force delete';
|
||||
|
||||
public const RESTORE = 'restore';
|
||||
}
|
||||
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace App\Enums\Auth;
|
||||
|
||||
use App\Enums\BaseEnum;
|
||||
|
||||
/**
|
||||
* Class SpecialPermission.
|
||||
*/
|
||||
final class SpecialPermission extends BaseEnum
|
||||
{
|
||||
public const BYPASS_API_RATE_LIMITER = 'bypass api rate limiter';
|
||||
|
||||
public const BYPASS_FEATURE_FLAGS = 'bypass feature flags';
|
||||
|
||||
public const VIEW_HORIZON = 'view horizon';
|
||||
|
||||
public const VIEW_NOVA = 'view nova';
|
||||
|
||||
public const VIEW_TELESCOPE = 'view telescope';
|
||||
}
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Http\Middleware;
|
||||
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Auth\User;
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
@@ -29,7 +31,10 @@ class IsFeatureEnabled
|
||||
*/
|
||||
public function handle(Request $request, Closure $next, string $flag, string $message): mixed
|
||||
{
|
||||
if (! Config::bool($flag)) {
|
||||
/** @var User|null $user */
|
||||
$user = $request->user('sanctum');
|
||||
|
||||
if (! Config::bool($flag) && empty($user?->can(SpecialPermission::BYPASS_FEATURE_FLAGS))) {
|
||||
abort(403, $message);
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Admin;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class AnnouncementPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view announcement'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Announcement::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class AnnouncementPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view announcement'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Announcement::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class AnnouncementPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create announcement');
|
||||
return $user->can(CrudPermission::CREATE()->format(Announcement::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class AnnouncementPolicy
|
||||
*/
|
||||
public function update(User $user, Announcement $announcement): bool
|
||||
{
|
||||
return ! $announcement->trashed() && $user->can('update announcement');
|
||||
return ! $announcement->trashed() && $user->can(CrudPermission::UPDATE()->format(Announcement::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class AnnouncementPolicy
|
||||
*/
|
||||
public function delete(User $user, Announcement $announcement): bool
|
||||
{
|
||||
return ! $announcement->trashed() && $user->can('delete announcement');
|
||||
return ! $announcement->trashed() && $user->can(CrudPermission::DELETE()->format(Announcement::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class AnnouncementPolicy
|
||||
*/
|
||||
public function restore(User $user, Announcement $announcement): bool
|
||||
{
|
||||
return $announcement->trashed() && $user->can('restore announcement');
|
||||
return $announcement->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Announcement::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class AnnouncementPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete announcement');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Announcement::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Admin;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class DumpPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view dump'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Dump::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class DumpPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view dump'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Dump::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class DumpPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create dump');
|
||||
return $user->can(CrudPermission::CREATE()->format(Dump::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class DumpPolicy
|
||||
*/
|
||||
public function update(User $user, Dump $dump): bool
|
||||
{
|
||||
return ! $dump->trashed() && $user->can('update dump');
|
||||
return ! $dump->trashed() && $user->can(CrudPermission::UPDATE()->format(Dump::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class DumpPolicy
|
||||
*/
|
||||
public function delete(User $user, Dump $dump): bool
|
||||
{
|
||||
return ! $dump->trashed() && $user->can('delete dump');
|
||||
return ! $dump->trashed() && $user->can(CrudPermission::DELETE()->format(Dump::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class DumpPolicy
|
||||
*/
|
||||
public function restore(User $user, Dump $dump): bool
|
||||
{
|
||||
return $dump->trashed() && $user->can('restore dump');
|
||||
return $dump->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Dump::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class DumpPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete dump');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Dump::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Admin;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Setting;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
|
||||
@@ -22,7 +24,7 @@ class SettingPolicy
|
||||
*/
|
||||
public function viewAny(User $user): bool
|
||||
{
|
||||
return $user->can('view setting');
|
||||
return $user->can(CrudPermission::VIEW()->format(Setting::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,7 +35,7 @@ class SettingPolicy
|
||||
*/
|
||||
public function view(User $user): bool
|
||||
{
|
||||
return $user->can('view setting');
|
||||
return $user->can(CrudPermission::VIEW()->format(Setting::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +46,7 @@ class SettingPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create setting');
|
||||
return $user->can(CrudPermission::CREATE()->format(Setting::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,7 +57,7 @@ class SettingPolicy
|
||||
*/
|
||||
public function update(User $user): bool
|
||||
{
|
||||
return $user->can('update setting');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Setting::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,6 +68,6 @@ class SettingPolicy
|
||||
*/
|
||||
public function delete(User $user): bool
|
||||
{
|
||||
return $user->can('delete setting');
|
||||
return $user->can(CrudPermission::DELETE()->format(Setting::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,9 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Auth;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\Permission;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
|
||||
@@ -22,7 +25,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function viewAny(User $user): bool
|
||||
{
|
||||
return $user->can('view permission');
|
||||
return $user->can(CrudPermission::VIEW()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,7 +36,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function view(User $user): bool
|
||||
{
|
||||
return $user->can('view permission');
|
||||
return $user->can(CrudPermission::VIEW()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +47,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create permission');
|
||||
return $user->can(CrudPermission::CREATE()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,7 +58,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function update(User $user): bool
|
||||
{
|
||||
return $user->can('update permission');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +69,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function delete(User $user): bool
|
||||
{
|
||||
return $user->can('delete permission');
|
||||
return $user->can(CrudPermission::DELETE()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +80,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function restore(User $user): bool
|
||||
{
|
||||
return $user->can('restore permission');
|
||||
return $user->can(ExtendedCrudPermission::RESTORE()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +91,7 @@ class PermissionPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete permission');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Permission::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,9 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Auth;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\Role;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
|
||||
@@ -22,7 +25,7 @@ class RolePolicy
|
||||
*/
|
||||
public function viewAny(User $user): bool
|
||||
{
|
||||
return $user->can('view role');
|
||||
return $user->can(CrudPermission::VIEW()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,7 +36,7 @@ class RolePolicy
|
||||
*/
|
||||
public function view(User $user): bool
|
||||
{
|
||||
return $user->can('view role');
|
||||
return $user->can(CrudPermission::VIEW()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +47,7 @@ class RolePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create role');
|
||||
return $user->can(CrudPermission::CREATE()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,7 +58,7 @@ class RolePolicy
|
||||
*/
|
||||
public function update(User $user): bool
|
||||
{
|
||||
return $user->can('update role');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +69,7 @@ class RolePolicy
|
||||
*/
|
||||
public function delete(User $user): bool
|
||||
{
|
||||
return $user->can('delete role');
|
||||
return $user->can(CrudPermission::DELETE()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +80,7 @@ class RolePolicy
|
||||
*/
|
||||
public function restore(User $user): bool
|
||||
{
|
||||
return $user->can('restore role');
|
||||
return $user->can(ExtendedCrudPermission::RESTORE()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +91,7 @@ class RolePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete role');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Role::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Auth;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
|
||||
@@ -22,7 +24,7 @@ class UserPolicy
|
||||
*/
|
||||
public function viewAny(User $user): bool
|
||||
{
|
||||
return $user->can('view user');
|
||||
return $user->can(CrudPermission::VIEW()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -33,7 +35,7 @@ class UserPolicy
|
||||
*/
|
||||
public function view(User $user): bool
|
||||
{
|
||||
return $user->can('view user');
|
||||
return $user->can(CrudPermission::VIEW()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -44,7 +46,7 @@ class UserPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create user');
|
||||
return $user->can(CrudPermission::CREATE()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -55,7 +57,7 @@ class UserPolicy
|
||||
*/
|
||||
public function update(User $user): bool
|
||||
{
|
||||
return $user->can('update user');
|
||||
return $user->can(CrudPermission::UPDATE()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +68,7 @@ class UserPolicy
|
||||
*/
|
||||
public function delete(User $user): bool
|
||||
{
|
||||
return $user->can('delete user');
|
||||
return $user->can(CrudPermission::DELETE()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -77,7 +79,7 @@ class UserPolicy
|
||||
*/
|
||||
public function restore(User $user): bool
|
||||
{
|
||||
return $user->can('restore user');
|
||||
return $user->can(ExtendedCrudPermission::RESTORE()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class UserPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete user');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(User::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Billing;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class BalancePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view balance'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Balance::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class BalancePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view balance'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Balance::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class BalancePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create balance');
|
||||
return $user->can(CrudPermission::CREATE()->format(Balance::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class BalancePolicy
|
||||
*/
|
||||
public function update(User $user, Balance $balance): bool
|
||||
{
|
||||
return ! $balance->trashed() && $user->can('update balance');
|
||||
return ! $balance->trashed() && $user->can(CrudPermission::UPDATE()->format(Balance::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class BalancePolicy
|
||||
*/
|
||||
public function delete(User $user, Balance $balance): bool
|
||||
{
|
||||
return ! $balance->trashed() && $user->can('delete balance');
|
||||
return ! $balance->trashed() && $user->can(CrudPermission::DELETE()->format(Balance::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class BalancePolicy
|
||||
*/
|
||||
public function restore(User $user, Balance $balance): bool
|
||||
{
|
||||
return $balance->trashed() && $user->can('restore balance');
|
||||
return $balance->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Balance::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class BalancePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete balance');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Balance::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Billing;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class TransactionPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view transaction'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Transaction::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class TransactionPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view transaction'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Transaction::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class TransactionPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create transaction');
|
||||
return $user->can(CrudPermission::CREATE()->format(Transaction::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class TransactionPolicy
|
||||
*/
|
||||
public function update(User $user, Transaction $transaction): bool
|
||||
{
|
||||
return ! $transaction->trashed() && $user->can('update transaction');
|
||||
return ! $transaction->trashed() && $user->can(CrudPermission::UPDATE()->format(Transaction::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class TransactionPolicy
|
||||
*/
|
||||
public function delete(User $user, Transaction $transaction): bool
|
||||
{
|
||||
return ! $transaction->trashed() && $user->can('delete transaction');
|
||||
return ! $transaction->trashed() && $user->can(CrudPermission::DELETE()->format(Transaction::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class TransactionPolicy
|
||||
*/
|
||||
public function restore(User $user, Transaction $transaction): bool
|
||||
{
|
||||
return $transaction->trashed() && $user->can('restore transaction');
|
||||
return $transaction->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Transaction::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class TransactionPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete transaction');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Transaction::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Document;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class PagePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view page'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Page::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class PagePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view page'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Page::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class PagePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create page');
|
||||
return $user->can(CrudPermission::CREATE()->format(Page::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class PagePolicy
|
||||
*/
|
||||
public function update(User $user, Page $page): bool
|
||||
{
|
||||
return ! $page->trashed() && $user->can('update page');
|
||||
return ! $page->trashed() && $user->can(CrudPermission::UPDATE()->format(Page::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class PagePolicy
|
||||
*/
|
||||
public function delete(User $user, Page $page): bool
|
||||
{
|
||||
return ! $page->trashed() && $user->can('delete page');
|
||||
return ! $page->trashed() && $user->can(CrudPermission::DELETE()->format(Page::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class PagePolicy
|
||||
*/
|
||||
public function restore(User $user, Page $page): bool
|
||||
{
|
||||
return $page->trashed() && $user->can('restore page');
|
||||
return $page->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Page::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class PagePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete page');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Page::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -34,7 +36,7 @@ class PlaylistTrackPolicy
|
||||
$playlist = $request->route('playlist');
|
||||
|
||||
return $user !== null
|
||||
? ($user->getKey() === $playlist?->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility)) && $user->can('view playlist track')
|
||||
? ($user->getKey() === $playlist?->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility)) && $user->can(CrudPermission::VIEW()->format(PlaylistTrack::class))
|
||||
: PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility);
|
||||
}
|
||||
);
|
||||
@@ -58,7 +60,7 @@ class PlaylistTrackPolicy
|
||||
$playlist = $request->route('playlist');
|
||||
|
||||
return $user !== null
|
||||
? ($user->getKey() === $playlist?->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility)) && $user->can('view playlist track')
|
||||
? ($user->getKey() === $playlist?->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility)) && $user->can(CrudPermission::VIEW()->format(PlaylistTrack::class))
|
||||
: PlaylistVisibility::PRIVATE()->isNot($playlist?->visibility);
|
||||
}
|
||||
);
|
||||
@@ -100,7 +102,7 @@ class PlaylistTrackPolicy
|
||||
/** @var Playlist|null $playlist */
|
||||
$playlist = $request->route('playlist');
|
||||
|
||||
return ! $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can('update playlist track');
|
||||
return ! $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can(CrudPermission::UPDATE()->format(PlaylistTrack::class));
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -122,7 +124,7 @@ class PlaylistTrackPolicy
|
||||
/** @var Playlist|null $playlist */
|
||||
$playlist = $request->route('playlist');
|
||||
|
||||
return ! $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can('delete playlist track');
|
||||
return ! $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can(CrudPermission::DELETE()->format(PlaylistTrack::class));
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -144,7 +146,7 @@ class PlaylistTrackPolicy
|
||||
/** @var Playlist|null $playlist */
|
||||
$playlist = $request->route('playlist');
|
||||
|
||||
return $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can('restore playlist track');
|
||||
return $track->trashed() && $user->getKey() === $playlist?->user_id && $user->can(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class));
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -157,6 +159,6 @@ class PlaylistTrackPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete playlist track');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\List;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -29,7 +31,7 @@ class PlaylistPolicy
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->hasRole('Admin'),
|
||||
fn (): bool => $user === null || $user->can('view playlist')
|
||||
fn (): bool => $user === null || $user->can(CrudPermission::VIEW()->format(Playlist::class))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -45,7 +47,7 @@ class PlaylistPolicy
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->hasRole('Admin'),
|
||||
fn (): bool => $user !== null
|
||||
? ($user->getKey() === $playlist->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist->visibility)) && $user->can('view playlist')
|
||||
? ($user->getKey() === $playlist->user_id || PlaylistVisibility::PRIVATE()->isNot($playlist->visibility)) && $user->can(CrudPermission::VIEW()->format(Playlist::class))
|
||||
: PlaylistVisibility::PRIVATE()->isNot($playlist->visibility)
|
||||
);
|
||||
}
|
||||
@@ -60,7 +62,7 @@ class PlaylistPolicy
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user->hasRole('Admin'),
|
||||
fn (): bool => $user->can('create playlist')
|
||||
fn (): bool => $user->can(CrudPermission::CREATE()->format(Playlist::class))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -75,7 +77,7 @@ class PlaylistPolicy
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user->hasRole('Admin'),
|
||||
fn (): bool => ! $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can('update playlist')
|
||||
fn (): bool => ! $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can(CrudPermission::UPDATE()->format(Playlist::class))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -90,7 +92,7 @@ class PlaylistPolicy
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user->hasRole('Admin'),
|
||||
fn (): bool => ! $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can('delete playlist')
|
||||
fn (): bool => ! $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can(CrudPermission::DELETE()->format(Playlist::class))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -105,7 +107,7 @@ class PlaylistPolicy
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user->hasRole('Admin'),
|
||||
fn (): bool => $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can('restore playlist')
|
||||
fn (): bool => $playlist->trashed() && $user->getKey() === $playlist->user_id && $user->can(ExtendedCrudPermission::RESTORE()->format(Playlist::class))
|
||||
);
|
||||
}
|
||||
|
||||
@@ -117,7 +119,7 @@ class PlaylistPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete playlist');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki\Anime;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime\AnimeSynonym;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class AnimeSynonymPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime synonym'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeSynonym::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class AnimeSynonymPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime synonym'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeSynonym::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class AnimeSynonymPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create anime synonym');
|
||||
return $user->can(CrudPermission::CREATE()->format(AnimeSynonym::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class AnimeSynonymPolicy
|
||||
*/
|
||||
public function update(User $user, AnimeSynonym $animesynonym): bool
|
||||
{
|
||||
return ! $animesynonym->trashed() && $user->can('update anime synonym');
|
||||
return ! $animesynonym->trashed() && $user->can(CrudPermission::UPDATE()->format(AnimeSynonym::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class AnimeSynonymPolicy
|
||||
*/
|
||||
public function delete(User $user, AnimeSynonym $animesynonym): bool
|
||||
{
|
||||
return ! $animesynonym->trashed() && $user->can('delete anime synonym');
|
||||
return ! $animesynonym->trashed() && $user->can(CrudPermission::DELETE()->format(AnimeSynonym::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class AnimeSynonymPolicy
|
||||
*/
|
||||
public function restore(User $user, AnimeSynonym $animesynonym): bool
|
||||
{
|
||||
return $animesynonym->trashed() && $user->can('restore anime synonym');
|
||||
return $animesynonym->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(AnimeSynonym::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class AnimeSynonymPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete anime synonym');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeSynonym::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki\Anime;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime\AnimeTheme;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class AnimeThemePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime theme'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeTheme::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class AnimeThemePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime theme'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeTheme::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class AnimeThemePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create anime theme');
|
||||
return $user->can(CrudPermission::CREATE()->format(AnimeTheme::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class AnimeThemePolicy
|
||||
*/
|
||||
public function update(User $user, AnimeTheme $animetheme): bool
|
||||
{
|
||||
return ! $animetheme->trashed() && $user->can('update anime theme');
|
||||
return ! $animetheme->trashed() && $user->can(CrudPermission::UPDATE()->format(AnimeTheme::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class AnimeThemePolicy
|
||||
*/
|
||||
public function delete(User $user, AnimeTheme $animetheme): bool
|
||||
{
|
||||
return ! $animetheme->trashed() && $user->can('delete anime theme');
|
||||
return ! $animetheme->trashed() && $user->can(CrudPermission::DELETE()->format(AnimeTheme::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class AnimeThemePolicy
|
||||
*/
|
||||
public function restore(User $user, AnimeTheme $animetheme): bool
|
||||
{
|
||||
return $animetheme->trashed() && $user->can('restore anime theme');
|
||||
return $animetheme->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(AnimeTheme::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class AnimeThemePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete anime theme');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeTheme::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki\Anime\Theme;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime\Theme\AnimeThemeEntry;
|
||||
use App\Models\Wiki\Video;
|
||||
@@ -27,7 +29,7 @@ class AnimeThemeEntryPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime theme entry'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeThemeEntry::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -41,7 +43,7 @@ class AnimeThemeEntryPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime theme entry'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(AnimeThemeEntry::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -54,7 +56,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create anime theme entry');
|
||||
return $user->can(CrudPermission::CREATE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +68,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function update(User $user, AnimeThemeEntry $animethemeentry): bool
|
||||
{
|
||||
return ! $animethemeentry->trashed() && $user->can('update anime theme entry');
|
||||
return ! $animethemeentry->trashed() && $user->can(CrudPermission::UPDATE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,7 +80,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function delete(User $user, AnimeThemeEntry $animethemeentry): bool
|
||||
{
|
||||
return ! $animethemeentry->trashed() && $user->can('delete anime theme entry');
|
||||
return ! $animethemeentry->trashed() && $user->can(CrudPermission::DELETE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,7 +92,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function restore(User $user, AnimeThemeEntry $animethemeentry): bool
|
||||
{
|
||||
return $animethemeentry->trashed() && $user->can('restore anime theme entry');
|
||||
return $animethemeentry->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +103,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete anime theme entry');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -112,7 +114,7 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function attachAnyVideo(User $user): bool
|
||||
{
|
||||
return $user->can('update anime theme entry');
|
||||
return $user->can(CrudPermission::UPDATE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,7 +132,7 @@ class AnimeThemeEntryPolicy
|
||||
->where($video->getKeyName(), $video->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update anime theme entry');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,6 +143,6 @@ class AnimeThemeEntryPolicy
|
||||
*/
|
||||
public function detachVideo(User $user): bool
|
||||
{
|
||||
return $user->can('update anime theme entry');
|
||||
return $user->can(CrudPermission::UPDATE()->format(AnimeThemeEntry::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -31,7 +33,7 @@ class AnimePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Anime::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -45,7 +47,7 @@ class AnimePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view anime'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Anime::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -58,7 +60,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create anime');
|
||||
return $user->can(CrudPermission::CREATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -70,7 +72,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function update(User $user, Anime $anime): bool
|
||||
{
|
||||
return ! $anime->trashed() && $user->can('update anime');
|
||||
return ! $anime->trashed() && $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -82,7 +84,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function delete(User $user, Anime $anime): bool
|
||||
{
|
||||
return ! $anime->trashed() && $user->can('delete anime');
|
||||
return ! $anime->trashed() && $user->can(CrudPermission::DELETE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -94,7 +96,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function restore(User $user, Anime $anime): bool
|
||||
{
|
||||
return $anime->trashed() && $user->can('restore anime');
|
||||
return $anime->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -105,7 +107,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete anime');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -116,7 +118,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function attachAnySeries(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,7 +136,7 @@ class AnimePolicy
|
||||
->where($series->getKeyName(), $series->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update anime');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,7 +147,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function detachSeries(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -156,7 +158,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function attachAnyExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,7 +169,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function attachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,7 +180,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function detachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -189,7 +191,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function attachAnyImage(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -207,7 +209,7 @@ class AnimePolicy
|
||||
->where($image->getKeyName(), $image->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update anime');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -218,7 +220,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function detachImage(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,7 +231,7 @@ class AnimePolicy
|
||||
*/
|
||||
public function attachAnyStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -247,7 +249,7 @@ class AnimePolicy
|
||||
->where($studio->getKeyName(), $studio->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update anime');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -258,6 +260,6 @@ class AnimePolicy
|
||||
*/
|
||||
public function detachStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update anime');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Anime::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Artist;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -27,7 +29,7 @@ class ArtistPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view artist'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Artist::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -41,7 +43,7 @@ class ArtistPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view artist'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Artist::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -54,7 +56,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create artist');
|
||||
return $user->can(CrudPermission::CREATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +68,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function update(User $user, Artist $artist): bool
|
||||
{
|
||||
return ! $artist->trashed() && $user->can('update artist');
|
||||
return ! $artist->trashed() && $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,7 +80,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function delete(User $user, Artist $artist): bool
|
||||
{
|
||||
return ! $artist->trashed() && $user->can('delete artist');
|
||||
return ! $artist->trashed() && $user->can(CrudPermission::DELETE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,7 +92,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function restore(User $user, Artist $artist): bool
|
||||
{
|
||||
return $artist->trashed() && $user->can('restore artist');
|
||||
return $artist->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +103,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete artist');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -112,7 +114,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachAnyExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -123,7 +125,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -134,7 +136,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function detachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -145,7 +147,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachAnySong(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -156,7 +158,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachSong(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -167,7 +169,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function detachSong(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -178,7 +180,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachAnyArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -189,7 +191,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -200,7 +202,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function detachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -211,7 +213,7 @@ class ArtistPolicy
|
||||
*/
|
||||
public function attachAnyImage(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -229,7 +231,7 @@ class ArtistPolicy
|
||||
->where($image->getKeyName(), $image->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update artist');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -240,6 +242,6 @@ class ArtistPolicy
|
||||
*/
|
||||
public function detachImage(User $user): bool
|
||||
{
|
||||
return $user->can('update artist');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Artist::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Audio;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class AudioPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view audio'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Audio::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class AudioPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view audio'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Audio::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class AudioPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create audio');
|
||||
return $user->can(CrudPermission::CREATE()->format(Audio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class AudioPolicy
|
||||
*/
|
||||
public function update(User $user, Audio $audio): bool
|
||||
{
|
||||
return ! $audio->trashed() && $user->can('update audio');
|
||||
return ! $audio->trashed() && $user->can(CrudPermission::UPDATE()->format(Audio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class AudioPolicy
|
||||
*/
|
||||
public function delete(User $user, Audio $audio): bool
|
||||
{
|
||||
return ! $audio->trashed() && $user->can('delete audio');
|
||||
return ! $audio->trashed() && $user->can(CrudPermission::DELETE()->format(Audio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class AudioPolicy
|
||||
*/
|
||||
public function restore(User $user, Audio $audio): bool
|
||||
{
|
||||
return $audio->trashed() && $user->can('restore audio');
|
||||
return $audio->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Audio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,7 +101,7 @@ class AudioPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete audio');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Audio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,6 +112,6 @@ class AudioPolicy
|
||||
*/
|
||||
public function addVideo(User $user): bool
|
||||
{
|
||||
return $user->can('create video');
|
||||
return $user->can(CrudPermission::CREATE()->format(Audio::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\ExternalResource;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class ExternalResourcePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view external resource'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(ExternalResource::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class ExternalResourcePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view external resource'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(ExternalResource::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create external resource');
|
||||
return $user->can(CrudPermission::CREATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function update(User $user, ExternalResource $resource): bool
|
||||
{
|
||||
return ! $resource->trashed() && $user->can('update external resource');
|
||||
return ! $resource->trashed() && $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function delete(User $user, ExternalResource $resource): bool
|
||||
{
|
||||
return ! $resource->trashed() && $user->can('delete external resource');
|
||||
return ! $resource->trashed() && $user->can(CrudPermission::DELETE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function restore(User $user, ExternalResource $resource): bool
|
||||
{
|
||||
return $resource->trashed() && $user->can('restore external resource');
|
||||
return $resource->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,7 +101,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete external resource');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,7 +112,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachAnyArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,7 +123,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +134,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function detachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,7 +145,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachAnyAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,7 +156,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +167,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function detachAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +178,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachAnyStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,7 +189,7 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function attachStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,6 +200,6 @@ class ExternalResourcePolicy
|
||||
*/
|
||||
public function detachStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update external resource');
|
||||
return $user->can(CrudPermission::UPDATE()->format(ExternalResource::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use App\Models\Wiki\Anime;
|
||||
@@ -33,7 +35,7 @@ class ImagePolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view image'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Image::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -47,7 +49,7 @@ class ImagePolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view image'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Image::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -60,7 +62,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create image');
|
||||
return $user->can(CrudPermission::CREATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -72,7 +74,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function update(User $user, Image $image): bool
|
||||
{
|
||||
return ! $image->trashed() && $user->can('update image');
|
||||
return ! $image->trashed() && $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -84,7 +86,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function delete(User $user, Image $image): bool
|
||||
{
|
||||
return ! $image->trashed() && $user->can('delete image');
|
||||
return ! $image->trashed() && $user->can(CrudPermission::DELETE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -96,7 +98,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function restore(User $user, Image $image): bool
|
||||
{
|
||||
return $image->trashed() && $user->can('restore image');
|
||||
return $image->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -107,7 +109,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete image');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -118,7 +120,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function attachAnyArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -136,7 +138,7 @@ class ImagePolicy
|
||||
->where($image->getKeyName(), $image->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update image');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -147,7 +149,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function detachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -158,7 +160,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function attachAnyAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +178,7 @@ class ImagePolicy
|
||||
->where($image->getKeyName(), $image->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update image');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,7 +189,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function detachAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -198,7 +200,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function attachAnyStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -216,7 +218,7 @@ class ImagePolicy
|
||||
->where($studio->getKeyName(), $studio->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update image');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -227,7 +229,7 @@ class ImagePolicy
|
||||
*/
|
||||
public function detachStudio(User $user): bool
|
||||
{
|
||||
return $user->can('update image');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Image::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Series;
|
||||
@@ -27,7 +29,7 @@ class SeriesPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view series'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Series::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -41,7 +43,7 @@ class SeriesPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view series'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Series::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -54,7 +56,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create series');
|
||||
return $user->can(CrudPermission::CREATE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -66,7 +68,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function update(User $user, Series $series): bool
|
||||
{
|
||||
return ! $series->trashed() && $user->can('update series');
|
||||
return ! $series->trashed() && $user->can(CrudPermission::UPDATE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -78,7 +80,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function delete(User $user, Series $series): bool
|
||||
{
|
||||
return ! $series->trashed() && $user->can('delete series');
|
||||
return ! $series->trashed() && $user->can(CrudPermission::DELETE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -90,7 +92,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function restore(User $user, Series $series): bool
|
||||
{
|
||||
return $series->trashed() && $user->can('restore series');
|
||||
return $series->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -101,7 +103,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete series');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -112,7 +114,7 @@ class SeriesPolicy
|
||||
*/
|
||||
public function attachAnyAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update series');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -130,7 +132,7 @@ class SeriesPolicy
|
||||
->where($series->getKeyName(), $series->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update series');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Series::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -141,6 +143,6 @@ class SeriesPolicy
|
||||
*/
|
||||
public function detachAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update series');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Series::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Song;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class SongPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view song'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Song::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class SongPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view song'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Song::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class SongPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create song');
|
||||
return $user->can(CrudPermission::CREATE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class SongPolicy
|
||||
*/
|
||||
public function update(User $user, Song $song): bool
|
||||
{
|
||||
return ! $song->trashed() && $user->can('update song');
|
||||
return ! $song->trashed() && $user->can(CrudPermission::UPDATE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class SongPolicy
|
||||
*/
|
||||
public function delete(User $user, Song $song): bool
|
||||
{
|
||||
return ! $song->trashed() && $user->can('delete song');
|
||||
return ! $song->trashed() && $user->can(CrudPermission::DELETE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class SongPolicy
|
||||
*/
|
||||
public function restore(User $user, Song $song): bool
|
||||
{
|
||||
return $song->trashed() && $user->can('restore song');
|
||||
return $song->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,7 +101,7 @@ class SongPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete song');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,7 +112,7 @@ class SongPolicy
|
||||
*/
|
||||
public function addAnimeTheme(User $user): bool
|
||||
{
|
||||
return $user->can('update song');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,7 +123,7 @@ class SongPolicy
|
||||
*/
|
||||
public function attachAnyArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update song');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +134,7 @@ class SongPolicy
|
||||
*/
|
||||
public function attachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update song');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Song::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,6 +145,6 @@ class SongPolicy
|
||||
*/
|
||||
public function detachArtist(User $user): bool
|
||||
{
|
||||
return $user->can('update song');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Song::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -29,7 +31,7 @@ class StudioPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view studio'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Studio::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -43,7 +45,7 @@ class StudioPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view studio'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Studio::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -56,7 +58,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create studio');
|
||||
return $user->can(CrudPermission::CREATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -68,7 +70,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function update(User $user, Studio $studio): bool
|
||||
{
|
||||
return ! $studio->trashed() && $user->can('update studio');
|
||||
return ! $studio->trashed() && $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -80,7 +82,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function delete(User $user, Studio $studio): bool
|
||||
{
|
||||
return ! $studio->trashed() && $user->can('delete studio');
|
||||
return ! $studio->trashed() && $user->can(CrudPermission::DELETE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -92,7 +94,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function restore(User $user, Studio $studio): bool
|
||||
{
|
||||
return $studio->trashed() && $user->can('restore studio');
|
||||
return $studio->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -103,7 +105,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete studio');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -114,7 +116,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function attachAnyAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +134,7 @@ class StudioPolicy
|
||||
->where($studio->getKeyName(), $studio->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update studio');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -143,7 +145,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function detachAnime(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -154,7 +156,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function attachAnyExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -165,7 +167,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function attachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +178,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function detachExternalResource(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -187,7 +189,7 @@ class StudioPolicy
|
||||
*/
|
||||
public function attachAnyImage(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -205,7 +207,7 @@ class StudioPolicy
|
||||
->where($image->getKeyName(), $image->getKey())
|
||||
->exists();
|
||||
|
||||
return ! $attached && $user->can('update studio');
|
||||
return ! $attached && $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -216,6 +218,6 @@ class StudioPolicy
|
||||
*/
|
||||
public function detachImage(User $user): bool
|
||||
{
|
||||
return $user->can('update studio');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Studio::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki\Video;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Video\VideoScript;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class VideoScriptPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view video script'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(VideoScript::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class VideoScriptPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view video script'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(VideoScript::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class VideoScriptPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create video script');
|
||||
return $user->can(CrudPermission::CREATE()->format(VideoScript::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class VideoScriptPolicy
|
||||
*/
|
||||
public function update(User $user, VideoScript $videoscript): bool
|
||||
{
|
||||
return ! $videoscript->trashed() && $user->can('update video script');
|
||||
return ! $videoscript->trashed() && $user->can(CrudPermission::UPDATE()->format(VideoScript::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class VideoScriptPolicy
|
||||
*/
|
||||
public function delete(User $user, VideoScript $videoscript): bool
|
||||
{
|
||||
return ! $videoscript->trashed() && $user->can('delete video script');
|
||||
return ! $videoscript->trashed() && $user->can(CrudPermission::DELETE()->format(VideoScript::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class VideoScriptPolicy
|
||||
*/
|
||||
public function restore(User $user, VideoScript $videoscript): bool
|
||||
{
|
||||
return $videoscript->trashed() && $user->can('restore video script');
|
||||
return $videoscript->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(VideoScript::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,6 +101,6 @@ class VideoScriptPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete video script');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(VideoScript::class));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Policies\Wiki;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Video;
|
||||
use Illuminate\Auth\Access\HandlesAuthorization;
|
||||
@@ -25,7 +27,7 @@ class VideoPolicy
|
||||
public function viewAny(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view video'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Video::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -39,7 +41,7 @@ class VideoPolicy
|
||||
public function view(?User $user): bool
|
||||
{
|
||||
return Nova::whenServing(
|
||||
fn (): bool => $user !== null && $user->can('view video'),
|
||||
fn (): bool => $user !== null && $user->can(CrudPermission::VIEW()->format(Video::class)),
|
||||
fn (): bool => true
|
||||
);
|
||||
}
|
||||
@@ -52,7 +54,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function create(User $user): bool
|
||||
{
|
||||
return $user->can('create video');
|
||||
return $user->can(CrudPermission::CREATE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -64,7 +66,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function update(User $user, Video $video): bool
|
||||
{
|
||||
return ! $video->trashed() && $user->can('update video');
|
||||
return ! $video->trashed() && $user->can(CrudPermission::UPDATE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -76,7 +78,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function delete(User $user, Video $video): bool
|
||||
{
|
||||
return ! $video->trashed() && $user->can('delete video');
|
||||
return ! $video->trashed() && $user->can(CrudPermission::DELETE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -88,7 +90,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function restore(User $user, Video $video): bool
|
||||
{
|
||||
return $video->trashed() && $user->can('restore video');
|
||||
return $video->trashed() && $user->can(ExtendedCrudPermission::RESTORE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -99,7 +101,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function forceDelete(User $user): bool
|
||||
{
|
||||
return $user->can('force delete video');
|
||||
return $user->can(ExtendedCrudPermission::FORCE_DELETE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -110,7 +112,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function attachAnyAnimeThemeEntry(User $user): bool
|
||||
{
|
||||
return $user->can('update video');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -121,7 +123,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function attachAnimeThemeEntry(User $user): bool
|
||||
{
|
||||
return $user->can('update video');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -132,7 +134,7 @@ class VideoPolicy
|
||||
*/
|
||||
public function detachAnimeThemeEntry(User $user): bool
|
||||
{
|
||||
return $user->can('update video');
|
||||
return $user->can(CrudPermission::UPDATE()->format(Video::class));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -4,7 +4,6 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Auth\Notifications\ResetPassword;
|
||||
use Illuminate\Foundation\Support\Providers\AuthServiceProvider as ServiceProvider;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
@@ -44,7 +43,5 @@ class AuthServiceProvider extends ServiceProvider
|
||||
->append('Policy')
|
||||
->__toString()
|
||||
);
|
||||
|
||||
Gate::define('viewNova', fn (User $user) => $user->can('view nova'));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
@@ -40,6 +41,6 @@ class HorizonServiceProvider extends HorizonApplicationServiceProvider
|
||||
*/
|
||||
protected function gate(): void
|
||||
{
|
||||
Gate::define('viewHorizon', fn (User $user) => $user->can('view horizon'));
|
||||
Gate::define('viewHorizon', fn (User $user) => $user->can(SpecialPermission::VIEW_HORIZON));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Nova\Dashboards\Main;
|
||||
use Illuminate\Http\Request;
|
||||
@@ -78,7 +79,7 @@ class NovaServiceProvider extends NovaApplicationServiceProvider
|
||||
*/
|
||||
protected function gate(): void
|
||||
{
|
||||
Gate::define('viewNova', fn (User $user) => $user->can('view nova'));
|
||||
Gate::define('viewNova', fn (User $user) => $user->can(SpecialPermission::VIEW_NOVA));
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,6 +7,7 @@ namespace App\Providers;
|
||||
use App\Constants\Config\AudioConstants;
|
||||
use App\Constants\Config\DumpConstants;
|
||||
use App\Constants\Config\VideoConstants;
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Cache\RateLimiting\Limit;
|
||||
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
|
||||
@@ -76,7 +77,7 @@ class RouteServiceProvider extends ServiceProvider
|
||||
RateLimiter::for('api', function (Request $request) {
|
||||
// Allow the client to bypass API rate limiting
|
||||
$user = $request->user('sanctum');
|
||||
if ($user instanceof User && $user->can('bypass api rate limiter')) {
|
||||
if ($user instanceof User && $user->can(SpecialPermission::BYPASS_API_RATE_LIMITER)) {
|
||||
return Limit::none();
|
||||
}
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace App\Providers;
|
||||
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Laravel\Telescope\IncomingEntry;
|
||||
@@ -72,6 +73,6 @@ class TelescopeServiceProvider extends TelescopeApplicationServiceProvider
|
||||
*/
|
||||
protected function gate(): void
|
||||
{
|
||||
Gate::define('viewTelescope', fn (User $user) => $user->can('view telescope'));
|
||||
Gate::define('viewTelescope', fn (User $user) => $user->can(SpecialPermission::VIEW_TELESCOPE));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,33 @@ declare(strict_types=1);
|
||||
|
||||
namespace Database\Seeders\Auth\Permission;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Admin\Setting;
|
||||
use App\Models\Auth\Permission;
|
||||
use App\Models\Auth\Role;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use App\Models\Billing\Transaction;
|
||||
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;
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
/**
|
||||
@@ -19,90 +45,55 @@ class PermissionSeeder extends Seeder
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
$this->registerResource('announcement', $this->extendedCrudAbilities());
|
||||
$this->registerResource('dump', $this->extendedCrudAbilities());
|
||||
$this->registerResource('setting', $this->crudAbilities());
|
||||
// Admin Resources
|
||||
$this->registerResource(Announcement::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Dump::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Setting::class, CrudPermission::getInstances());
|
||||
|
||||
// Auth Resources
|
||||
$this->registerResource('permission', ['view']);
|
||||
$this->registerResource('role', $this->crudAbilities());
|
||||
$this->registerResource('user', $this->extendedCrudAbilities());
|
||||
$this->registerResource(Permission::class, [CrudPermission::VIEW()]);
|
||||
$this->registerResource(Role::class, CrudPermission::getInstances());
|
||||
$this->registerResource(User::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Billing Resources
|
||||
$this->registerResource('balance', $this->extendedCrudAbilities());
|
||||
$this->registerResource('transaction', $this->extendedCrudAbilities());
|
||||
$this->registerResource(Balance::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Transaction::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// List Resources
|
||||
$this->registerResource('playlist', $this->extendedCrudAbilities());
|
||||
$this->registerResource('playlist track', $this->extendedCrudAbilities());
|
||||
$this->registerResource(Playlist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(PlaylistTrack::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Wiki Resources
|
||||
$this->registerResource('anime', $this->extendedCrudAbilities());
|
||||
$this->registerResource('anime synonym', $this->extendedCrudAbilities());
|
||||
$this->registerResource('anime theme', $this->extendedCrudAbilities());
|
||||
$this->registerResource('anime theme entry', $this->extendedCrudAbilities());
|
||||
$this->registerResource('artist', $this->extendedCrudAbilities());
|
||||
$this->registerResource('audio', $this->extendedCrudAbilities());
|
||||
$this->registerResource('external resource', $this->extendedCrudAbilities());
|
||||
$this->registerResource('image', $this->extendedCrudAbilities());
|
||||
$this->registerResource('page', $this->extendedCrudAbilities());
|
||||
$this->registerResource('series', $this->extendedCrudAbilities());
|
||||
$this->registerResource('song', $this->extendedCrudAbilities());
|
||||
$this->registerResource('studio', $this->extendedCrudAbilities());
|
||||
$this->registerResource('video', $this->extendedCrudAbilities());
|
||||
$this->registerResource('video script', $this->extendedCrudAbilities());
|
||||
$this->registerResource(Anime::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(AnimeSynonym::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(AnimeTheme::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(AnimeThemeEntry::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Artist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Audio::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(ExternalResource::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Image::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Page::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Series::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Song::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Studio::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(Video::class, ExtendedCrudPermission::getInstances());
|
||||
$this->registerResource(VideoScript::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Special Permissions
|
||||
$this->registerAbilities([
|
||||
'view nova',
|
||||
'view telescope',
|
||||
'view horizon',
|
||||
'bypass api rate limiter',
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CRUD abilities for resource.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
protected function crudAbilities(): array
|
||||
{
|
||||
return [
|
||||
'view',
|
||||
'create',
|
||||
'update',
|
||||
'delete',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get extended CRUD abilities for soft-delete resource.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
protected function extendedCrudAbilities(): array
|
||||
{
|
||||
return array_merge(
|
||||
$this->crudAbilities(),
|
||||
[
|
||||
'restore',
|
||||
'force delete',
|
||||
],
|
||||
);
|
||||
$this->registerAbilities(SpecialPermission::getValues());
|
||||
}
|
||||
|
||||
/**
|
||||
* Register resource abilities.
|
||||
*
|
||||
* @param string $resource
|
||||
* @param array<int, string> $abilities
|
||||
* @param CrudPermission[] $abilities
|
||||
* @return void
|
||||
*/
|
||||
protected function registerResource(string $resource, array $abilities): void
|
||||
{
|
||||
foreach ($abilities as $ability) {
|
||||
Permission::findOrCreate("$ability $resource");
|
||||
Permission::findOrCreate($ability->format($resource));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,33 @@ 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\Admin\Announcement;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Admin\Setting;
|
||||
use App\Models\Auth\Permission;
|
||||
use App\Models\Auth\Role;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use App\Models\Billing\Transaction;
|
||||
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 AdminSeeder.
|
||||
@@ -22,56 +48,40 @@ class AdminSeeder extends RoleSeeder
|
||||
$role = Role::findOrCreate('Admin');
|
||||
|
||||
// Admin Resources
|
||||
$this->configureResource($role, 'announcement', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'dump', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'setting', $this->crudAbilities());
|
||||
$this->configureResource($role, Announcement::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Dump::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Setting::class, CrudPermission::getInstances());
|
||||
|
||||
// Auth Resources
|
||||
$this->configureResource($role, 'permission', ['view']);
|
||||
$this->configureResource($role, 'role', $this->crudAbilities());
|
||||
$this->configureResource($role, 'user', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Permission::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Role::class, CrudPermission::getInstances());
|
||||
$this->configureResource($role, User::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Billing Resources
|
||||
$this->configureResource($role, 'balance', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'transaction', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Balance::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Transaction::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// List Resources
|
||||
$this->configureResource($role, 'playlist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'playlist track', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Playlist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, PlaylistTrack::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Wiki Resources
|
||||
$this->configureResource($role, 'anime', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime synonym', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime theme', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime theme entry', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'artist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'audio', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'external resource', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'image', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'page', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'series', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'song', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'studio', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'video', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'video script', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Anime::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, AnimeSynonym::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, AnimeTheme::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, AnimeThemeEntry::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Artist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Audio::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, ExternalResource::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Image::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Page::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Series::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Song::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Studio::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, Video::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, VideoScript::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Special Permissions
|
||||
$this->configureAbilities($role, ['view nova', 'view telescope', 'view horizon', 'bypass api rate limiter']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get extended CRUD abilities for soft-delete resource.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
protected function extendedCrudAbilities(): array
|
||||
{
|
||||
return array_merge(
|
||||
$this->crudAbilities(),
|
||||
[
|
||||
'restore',
|
||||
'force delete',
|
||||
],
|
||||
);
|
||||
$this->configureAbilities($role, SpecialPermission::getValues());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,72 @@
|
||||
<?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 PatronRoleSeeder.
|
||||
*/
|
||||
class PatronRoleSeeder extends RoleSeeder
|
||||
{
|
||||
/**
|
||||
* Run the database seeds.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function run(): void
|
||||
{
|
||||
/** @var Role $role */
|
||||
$role = Role::findOrCreate('Patron');
|
||||
|
||||
// List Resources
|
||||
$this->configureResource($role, Playlist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, PlaylistTrack::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Wiki Resources
|
||||
$this->configureResource($role, Anime::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeSynonym::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeTheme::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeThemeEntry::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Artist::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Audio::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, ExternalResource::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Image::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Page::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Series::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Song::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Studio::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Video::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, VideoScript::class, [CrudPermission::VIEW()]);
|
||||
|
||||
// Special Permissions
|
||||
$this->configureAbilities(
|
||||
$role,
|
||||
[
|
||||
SpecialPermission::BYPASS_FEATURE_FLAGS,
|
||||
SpecialPermission::VIEW_NOVA,
|
||||
]
|
||||
);
|
||||
}
|
||||
}
|
||||
@@ -4,7 +4,10 @@ declare(strict_types=1);
|
||||
|
||||
namespace Database\Seeders\Auth\Role;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\Role;
|
||||
use App\Models\List\Playlist;
|
||||
use App\Models\List\Playlist\PlaylistTrack;
|
||||
|
||||
/**
|
||||
* Class PlaylistUserRoleSeeder.
|
||||
@@ -22,8 +25,8 @@ class PlaylistUserRoleSeeder extends RoleSeeder
|
||||
$role = Role::findOrCreate('Playlist User');
|
||||
|
||||
// List Resources
|
||||
$this->configureResource($role, 'playlist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'playlist track', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Playlist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, PlaylistTrack::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
$role->default = true;
|
||||
if ($role->isDirty()) {
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Database\Seeders\Auth\Role;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\Permission;
|
||||
use App\Models\Auth\Role;
|
||||
use Illuminate\Database\Seeder;
|
||||
@@ -25,6 +26,7 @@ class RoleSeeder extends Seeder
|
||||
$this->call(WikiEditorRoleSeeder::class);
|
||||
$this->call(WikiViewerRoleSeeder::class);
|
||||
$this->call(PlaylistUserRoleSeeder::class);
|
||||
$this->call(PatronRoleSeeder::class);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -32,12 +34,12 @@ class RoleSeeder extends Seeder
|
||||
*
|
||||
* @param Role $role
|
||||
* @param string $resource
|
||||
* @param array<int, string> $abilities
|
||||
* @param CrudPermission[] $abilities
|
||||
* @return void
|
||||
*/
|
||||
protected function configureResource(Role $role, string $resource, array $abilities): void
|
||||
{
|
||||
$permissions = Arr::map($abilities, fn (string $ability) => Permission::findByName("$ability $resource"));
|
||||
$permissions = Arr::map($abilities, fn (CrudPermission $ability) => Permission::findByName($ability->format($resource)));
|
||||
|
||||
$role->givePermissionTo($permissions);
|
||||
}
|
||||
@@ -55,34 +57,4 @@ class RoleSeeder extends Seeder
|
||||
|
||||
$role->givePermissionTo($permissions);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get CRUD abilities for resource.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
protected function crudAbilities(): array
|
||||
{
|
||||
return [
|
||||
'view',
|
||||
'create',
|
||||
'update',
|
||||
'delete',
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get extended CRUD abilities for soft-delete resource.
|
||||
*
|
||||
* @return array<int, string>
|
||||
*/
|
||||
protected function extendedCrudAbilities(): array
|
||||
{
|
||||
return array_merge(
|
||||
$this->crudAbilities(),
|
||||
[
|
||||
'restore',
|
||||
],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,27 @@ 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;
|
||||
use Illuminate\Support\Arr;
|
||||
|
||||
/**
|
||||
* Class WikiEditorRoleSeeder.
|
||||
@@ -21,27 +41,31 @@ class WikiEditorRoleSeeder extends RoleSeeder
|
||||
/** @var Role $role */
|
||||
$role = Role::findOrCreate('Wiki Editor');
|
||||
|
||||
$extendedCrudPermissions = ExtendedCrudPermission::getInstances();
|
||||
|
||||
// List Resources
|
||||
$this->configureResource($role, 'playlist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'playlist track', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Playlist::class, $extendedCrudPermissions);
|
||||
$this->configureResource($role, PlaylistTrack::class, $extendedCrudPermissions);
|
||||
|
||||
Arr::forget($extendedCrudPermissions, ExtendedCrudPermission::FORCE_DELETE()->key);
|
||||
|
||||
// Wiki Resources
|
||||
$this->configureResource($role, 'anime', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime synonym', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime theme', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'anime theme entry', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'artist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'audio', ['view', 'update']);
|
||||
$this->configureResource($role, 'external resource', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'image', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'page', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'series', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'song', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'studio', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'video', ['view', 'update']);
|
||||
$this->configureResource($role, 'video script', ['view']);
|
||||
$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, ['view nova']);
|
||||
$this->configureAbilities($role, [SpecialPermission::VIEW_NOVA]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,7 +4,26 @@ 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 WikiViewerRoleSeeder.
|
||||
@@ -22,26 +41,26 @@ class WikiViewerRoleSeeder extends RoleSeeder
|
||||
$role = Role::findOrCreate('Wiki Viewer');
|
||||
|
||||
// List Resources
|
||||
$this->configureResource($role, 'playlist', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, 'playlist track', $this->extendedCrudAbilities());
|
||||
$this->configureResource($role, Playlist::class, ExtendedCrudPermission::getInstances());
|
||||
$this->configureResource($role, PlaylistTrack::class, ExtendedCrudPermission::getInstances());
|
||||
|
||||
// Wiki Resources
|
||||
$this->configureResource($role, 'anime', ['view']);
|
||||
$this->configureResource($role, 'anime synonym', ['view']);
|
||||
$this->configureResource($role, 'anime theme', ['view']);
|
||||
$this->configureResource($role, 'anime theme entry', ['view']);
|
||||
$this->configureResource($role, 'artist', ['view']);
|
||||
$this->configureResource($role, 'audio', ['view']);
|
||||
$this->configureResource($role, 'external resource', ['view']);
|
||||
$this->configureResource($role, 'image', ['view']);
|
||||
$this->configureResource($role, 'page', ['view']);
|
||||
$this->configureResource($role, 'series', ['view']);
|
||||
$this->configureResource($role, 'song', ['view']);
|
||||
$this->configureResource($role, 'studio', ['view']);
|
||||
$this->configureResource($role, 'video', ['view']);
|
||||
$this->configureResource($role, 'video script', ['view']);
|
||||
$this->configureResource($role, Anime::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeSynonym::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeTheme::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, AnimeThemeEntry::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Artist::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Audio::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, ExternalResource::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Image::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Page::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Series::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Song::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Studio::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, Video::class, [CrudPermission::VIEW()]);
|
||||
$this->configureResource($role, VideoScript::class, [CrudPermission::VIEW()]);
|
||||
|
||||
// Special Permissions
|
||||
$this->configureAbilities($role, ['view nova']);
|
||||
$this->configureAbilities($role, [SpecialPermission::VIEW_NOVA]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,12 +6,15 @@ namespace Tests\Feature\Http\Admin;
|
||||
|
||||
use App\Constants\Config\DumpConstants;
|
||||
use App\Constants\Config\FlagConstants;
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
use Illuminate\Http\Testing\File;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -39,6 +42,33 @@ class DumpTest extends TestCase
|
||||
$response->assertForbidden();
|
||||
}
|
||||
|
||||
/**
|
||||
* Users with the bypass feature flag permission shall be permitted to download dumps
|
||||
* even if the 'flags.allow_dump_downloading' property is disabled.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVideoStreamingPermittedForBypass(): void
|
||||
{
|
||||
Config::set(FlagConstants::ALLOW_DUMP_DOWNLOADING_FLAG_QUALIFIED, $this->faker->boolean());
|
||||
|
||||
$fs = Storage::fake(Config::get(DumpConstants::DISK_QUALIFIED));
|
||||
$file = File::fake()->create($this->faker->word().'.sql');
|
||||
$fsFile = $fs->putFile('', $file);
|
||||
|
||||
$dump = Dump::factory()->createOne([
|
||||
Dump::ATTRIBUTE_PATH => $fsFile,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
$response = $this->get(route('dump.show', ['dump' => $dump]));
|
||||
|
||||
$response->assertDownload($dump->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* If the dump is soft-deleted, the user shall receive a not found exception.
|
||||
*
|
||||
|
||||
@@ -8,7 +8,9 @@ use App\Actions\Storage\Admin\Dump\DumpDocumentAction;
|
||||
use App\Actions\Storage\Admin\Dump\DumpWikiAction;
|
||||
use App\Constants\Config\DumpConstants;
|
||||
use App\Constants\Config\FlagConstants;
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
use Illuminate\Http\Testing\File;
|
||||
@@ -16,6 +18,7 @@ use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -48,6 +51,52 @@ class LatestDocumentDumpTest extends TestCase
|
||||
$response->assertForbidden();
|
||||
}
|
||||
|
||||
/**
|
||||
* Users with the bypass feature flag permission shall be permitted to download the latest document dump
|
||||
* even if the 'flags.allow_dump_downloading' property is disabled.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVideoStreamingPermittedForBypass(): void
|
||||
{
|
||||
Storage::fake('local');
|
||||
$fs = Storage::fake(Config::get(DumpConstants::DISK_QUALIFIED));
|
||||
|
||||
Config::set(FlagConstants::ALLOW_DUMP_DOWNLOADING_FLAG_QUALIFIED, $this->faker->boolean());
|
||||
|
||||
Collection::times($this->faker->randomDigitNotNull(), function () {
|
||||
$action = new DumpWikiAction();
|
||||
|
||||
$action->handle();
|
||||
});
|
||||
|
||||
Collection::times($this->faker->randomDigitNotNull(), function () {
|
||||
$action = new DumpDocumentAction();
|
||||
|
||||
$action->handle();
|
||||
});
|
||||
|
||||
$path = Str::of(DumpDocumentAction::FILENAME_PREFIX)
|
||||
->append($this->faker->word())
|
||||
->append('.sql')
|
||||
->__toString();
|
||||
|
||||
$file = File::fake()->create($path);
|
||||
$fsFile = $fs->putFileAs('', $file, $path);
|
||||
|
||||
$dump = Dump::factory()->createOne([
|
||||
Dump::ATTRIBUTE_PATH => $fsFile,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
$response = $this->get(route('dump.latest.document.show'));
|
||||
|
||||
$response->assertDownload($dump->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* If no dumps exist, the user shall receive a not found error.
|
||||
*
|
||||
|
||||
@@ -8,7 +8,9 @@ use App\Actions\Storage\Admin\Dump\DumpDocumentAction;
|
||||
use App\Actions\Storage\Admin\Dump\DumpWikiAction;
|
||||
use App\Constants\Config\DumpConstants;
|
||||
use App\Constants\Config\FlagConstants;
|
||||
use App\Enums\Auth\SpecialPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithFaker;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
use Illuminate\Http\Testing\File;
|
||||
@@ -16,6 +18,7 @@ use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Facades\Config;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Sanctum\Sanctum;
|
||||
use Tests\TestCase;
|
||||
|
||||
/**
|
||||
@@ -48,6 +51,52 @@ class LatestWikiDumpTest extends TestCase
|
||||
$response->assertForbidden();
|
||||
}
|
||||
|
||||
/**
|
||||
* Users with the bypass feature flag permission shall be permitted to download the latest wiki dump
|
||||
* even if the 'flags.allow_dump_downloading' property is disabled.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function testVideoStreamingPermittedForBypass(): void
|
||||
{
|
||||
Storage::fake('local');
|
||||
$fs = Storage::fake(Config::get(DumpConstants::DISK_QUALIFIED));
|
||||
|
||||
Config::set(FlagConstants::ALLOW_DUMP_DOWNLOADING_FLAG_QUALIFIED, $this->faker->boolean());
|
||||
|
||||
Collection::times($this->faker->randomDigitNotNull(), function () {
|
||||
$action = new DumpDocumentAction();
|
||||
|
||||
$action->handle();
|
||||
});
|
||||
|
||||
Collection::times($this->faker->randomDigitNotNull(), function () {
|
||||
$action = new DumpWikiAction();
|
||||
|
||||
$action->handle();
|
||||
});
|
||||
|
||||
$path = Str::of(DumpWikiAction::FILENAME_PREFIX)
|
||||
->append($this->faker->word())
|
||||
->append('.sql')
|
||||
->__toString();
|
||||
|
||||
$file = File::fake()->create($path);
|
||||
$fsFile = $fs->putFileAs('', $file, $path);
|
||||
|
||||
$dump = Dump::factory()->createOne([
|
||||
Dump::ATTRIBUTE_PATH => $fsFile,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission(SpecialPermission::BYPASS_FEATURE_FLAGS)->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
$response = $this->get(route('dump.latest.wiki.show'));
|
||||
|
||||
$response->assertDownload($dump->path);
|
||||
}
|
||||
|
||||
/**
|
||||
* If no dumps exist, the user shall receive a not found error.
|
||||
*
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Announcement;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class AnnouncementDestroyTest extends TestCase
|
||||
|
||||
$announcement->delete();
|
||||
|
||||
$user = User::factory()->withPermission('delete announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class AnnouncementDestroyTest extends TestCase
|
||||
{
|
||||
$announcement = Announcement::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Announcement;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class AnnouncementForceDeleteTest extends TestCase
|
||||
{
|
||||
$announcement = Announcement::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete announcement')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Announcement;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -62,7 +63,7 @@ class AnnouncementRestoreTest extends TestCase
|
||||
{
|
||||
$announcement = Announcement::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore announcement')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -82,7 +83,7 @@ class AnnouncementRestoreTest extends TestCase
|
||||
|
||||
$announcement->delete();
|
||||
|
||||
$user = User::factory()->withPermission('restore announcement')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Announcement;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -56,7 +57,7 @@ class AnnouncementStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -76,7 +77,7 @@ class AnnouncementStoreTest extends TestCase
|
||||
{
|
||||
$parameters = Announcement::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('create announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Announcement;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Announcement;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -66,7 +67,7 @@ class AnnouncementUpdateTest extends TestCase
|
||||
|
||||
$parameters = Announcement::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -86,7 +87,7 @@ class AnnouncementUpdateTest extends TestCase
|
||||
|
||||
$parameters = Announcement::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update announcement')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Announcement::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Dump;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class DumpDestroyTest extends TestCase
|
||||
|
||||
$dump->delete();
|
||||
|
||||
$user = User::factory()->withPermission('delete dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class DumpDestroyTest extends TestCase
|
||||
{
|
||||
$dump = Dump::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Dump;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class DumpForceDeleteTest extends TestCase
|
||||
{
|
||||
$dump = Dump::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete dump')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Dump;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -62,7 +63,7 @@ class DumpRestoreTest extends TestCase
|
||||
{
|
||||
$dump = Dump::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore dump')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -82,7 +83,7 @@ class DumpRestoreTest extends TestCase
|
||||
|
||||
$dump->delete();
|
||||
|
||||
$user = User::factory()->withPermission('restore dump')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Dump;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -56,7 +57,7 @@ class DumpStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -76,7 +77,7 @@ class DumpStoreTest extends TestCase
|
||||
{
|
||||
$parameters = Dump::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('create dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Admin\Dump;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Admin\Dump;
|
||||
use App\Models\Auth\User;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -66,7 +67,7 @@ class DumpUpdateTest extends TestCase
|
||||
|
||||
$parameters = Dump::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -86,7 +87,7 @@ class DumpUpdateTest extends TestCase
|
||||
|
||||
$parameters = Dump::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update dump')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Dump::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Auth\User\Me\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Http\Api\Query\Query;
|
||||
use App\Http\Resources\List\Collection\PlaylistCollection;
|
||||
use App\Models\Auth\User;
|
||||
@@ -65,7 +66,7 @@ class MyPlaylistIndexTest extends TestCase
|
||||
->count($this->faker->randomDigitNotNull())
|
||||
->create();
|
||||
|
||||
$user = User::factory()->withPermission('view playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlistCount = $this->faker->randomDigitNotNull();
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Balance;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class BalanceDestroyTest extends TestCase
|
||||
|
||||
$balance->delete();
|
||||
|
||||
$user = User::factory()->withPermission('delete balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class BalanceDestroyTest extends TestCase
|
||||
{
|
||||
$balance = Balance::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Balance;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class BalanceForceDeleteTest extends TestCase
|
||||
{
|
||||
$balance = Balance::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete balance')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Balance;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Balance;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -62,7 +63,7 @@ class BalanceRestoreTest extends TestCase
|
||||
{
|
||||
$balance = Balance::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore balance')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -82,7 +83,7 @@ class BalanceRestoreTest extends TestCase
|
||||
|
||||
$balance->delete();
|
||||
|
||||
$user = User::factory()->withPermission('restore balance')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Balance;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\Billing\BalanceFrequency;
|
||||
use App\Enums\Models\Billing\Service;
|
||||
use App\Models\Auth\User;
|
||||
@@ -58,7 +59,7 @@ class BalanceStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class BalanceStoreTest extends TestCase
|
||||
]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('create balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Balance;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\Billing\BalanceFrequency;
|
||||
use App\Enums\Models\Billing\Service;
|
||||
use App\Models\Auth\User;
|
||||
@@ -86,7 +87,7 @@ class BalanceUpdateTest extends TestCase
|
||||
]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -112,7 +113,7 @@ class BalanceUpdateTest extends TestCase
|
||||
]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update balance')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Balance::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Transaction;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class TransactionDestroyTest extends TestCase
|
||||
|
||||
$transaction->delete();
|
||||
|
||||
$user = User::factory()->withPermission('delete transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class TransactionDestroyTest extends TestCase
|
||||
{
|
||||
$transaction = Transaction::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Transaction;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class TransactionForceDeleteTest extends TestCase
|
||||
{
|
||||
$transaction = Transaction::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete transaction')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Transaction;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -62,7 +63,7 @@ class TransactionRestoreTest extends TestCase
|
||||
{
|
||||
$transaction = Transaction::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore transaction')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -82,7 +83,7 @@ class TransactionRestoreTest extends TestCase
|
||||
|
||||
$transaction->delete();
|
||||
|
||||
$user = User::factory()->withPermission('restore transaction')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Transaction;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\Billing\Service;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
@@ -57,7 +58,7 @@ class TransactionStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -83,7 +84,7 @@ class TransactionStoreTest extends TestCase
|
||||
[Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('create transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Billing\Transaction;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\Billing\Service;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Billing\Transaction;
|
||||
@@ -76,7 +77,7 @@ class TransactionUpdateTest extends TestCase
|
||||
[Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -99,7 +100,7 @@ class TransactionUpdateTest extends TestCase
|
||||
[Transaction::ATTRIBUTE_SERVICE => Service::getRandomInstance()->description]
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update transaction')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Transaction::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Document\Page;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class PageDestroyTest extends TestCase
|
||||
|
||||
$page->delete();
|
||||
|
||||
$user = User::factory()->withPermission('delete page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class PageDestroyTest extends TestCase
|
||||
{
|
||||
$page = Page::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Document\Page;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class PageForceDeleteTest extends TestCase
|
||||
{
|
||||
$page = Page::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete page')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Document\Page;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -62,7 +63,7 @@ class PageRestoreTest extends TestCase
|
||||
{
|
||||
$page = Page::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore page')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -82,7 +83,7 @@ class PageRestoreTest extends TestCase
|
||||
|
||||
$page->delete();
|
||||
|
||||
$user = User::factory()->withPermission('restore page')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Document\Page;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -56,7 +57,7 @@ class PageStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -78,7 +79,7 @@ class PageStoreTest extends TestCase
|
||||
{
|
||||
$parameters = Page::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('create page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\Document\Page;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Document\Page;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -66,7 +67,7 @@ class PageUpdateTest extends TestCase
|
||||
|
||||
$parameters = Page::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -86,7 +87,7 @@ class PageUpdateTest extends TestCase
|
||||
|
||||
$parameters = Page::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermission('update page')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Page::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace Http\Api\List\Playlist;
|
||||
|
||||
use App\Contracts\Http\Api\Field\SortableField;
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Http\Api\Sort\Direction;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Http\Api\Criteria\Paging\Criteria;
|
||||
@@ -71,7 +72,7 @@ class BackwardIndexTest extends TestCase
|
||||
Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -87,7 +88,7 @@ class BackwardIndexTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistTrackCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -5,6 +5,7 @@ declare(strict_types=1);
|
||||
namespace Http\Api\List\Playlist;
|
||||
|
||||
use App\Contracts\Http\Api\Field\SortableField;
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Http\Api\Sort\Direction;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Http\Api\Criteria\Paging\Criteria;
|
||||
@@ -71,7 +72,7 @@ class ForwardIndexTest extends TestCase
|
||||
Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -87,7 +88,7 @@ class ForwardIndexTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistTrackCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class PlaylistDestroyTest extends TestCase
|
||||
->for(User::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -76,7 +77,7 @@ class PlaylistDestroyTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -98,7 +99,7 @@ class PlaylistDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDeleted(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -58,7 +59,7 @@ class PlaylistForceDeleteTest extends TestCase
|
||||
{
|
||||
$playlist = Playlist::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('force delete playlist')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use Illuminate\Foundation\Testing\WithoutEvents;
|
||||
@@ -60,7 +61,7 @@ class PlaylistRestoreTest extends TestCase
|
||||
->for(User::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore playlist')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -76,7 +77,7 @@ class PlaylistRestoreTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('restore playlist')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -96,7 +97,7 @@ class PlaylistRestoreTest extends TestCase
|
||||
*/
|
||||
public function testRestored(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('restore playlist')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Enums\Models\Wiki\ImageFacet;
|
||||
use App\Http\Api\Field\Field;
|
||||
@@ -63,7 +64,7 @@ class PlaylistShowTest extends TestCase
|
||||
Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission('view playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -79,7 +80,7 @@ class PlaylistShowTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -57,7 +58,7 @@ class PlaylistStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -81,7 +82,7 @@ class PlaylistStoreTest extends TestCase
|
||||
[Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description],
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('create playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -77,7 +78,7 @@ class PlaylistUpdateTest extends TestCase
|
||||
[Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::getRandomInstance()->description],
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -93,7 +94,7 @@ class PlaylistUpdateTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -132,7 +133,7 @@ class PlaylistUpdateTest extends TestCase
|
||||
*/
|
||||
public function testUpdate(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -68,7 +69,7 @@ class TrackDestroyTest extends TestCase
|
||||
->for(Playlist::factory()->for(User::factory()))
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -84,7 +85,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testScoped(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -111,7 +112,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$track = PlaylistTrack::factory()
|
||||
->for(Playlist::factory()->for($user))
|
||||
@@ -133,7 +134,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDeleted(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -168,7 +169,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDestroyFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -205,7 +206,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDestroyLast(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -242,7 +243,7 @@ class TrackDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDestroySecond(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -64,7 +65,7 @@ class TrackForceDeleteTest extends TestCase
|
||||
*/
|
||||
public function testScoped(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('force delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -91,7 +92,7 @@ class TrackForceDeleteTest extends TestCase
|
||||
*/
|
||||
public function testDeleted(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('force delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -122,7 +123,7 @@ class TrackForceDeleteTest extends TestCase
|
||||
*/
|
||||
public function testForceDeleteFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('force delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -155,7 +156,7 @@ class TrackForceDeleteTest extends TestCase
|
||||
*/
|
||||
public function testForceDeleteLast(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('force delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -188,7 +189,7 @@ class TrackForceDeleteTest extends TestCase
|
||||
*/
|
||||
public function testForceDeleteSecond(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('force delete playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::FORCE_DELETE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -6,6 +6,7 @@ namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Concerns\Actions\Http\Api\SortsModels;
|
||||
use App\Contracts\Http\Api\Field\SortableField;
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Http\Api\Filter\TrashedStatus;
|
||||
use App\Enums\Http\Api\Sort\Direction;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
@@ -77,7 +78,7 @@ class TrackIndexTest extends TestCase
|
||||
Playlist::ATTRIBUTE_VISIBILITY => PlaylistVisibility::PRIVATE,
|
||||
]);
|
||||
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -93,7 +94,7 @@ class TrackIndexTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistTrackCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,8 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Auth\ExtendedCrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -68,7 +70,7 @@ class TrackRestoreTest extends TestCase
|
||||
->for(Playlist::factory()->for(User::factory()))
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('restore playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -84,7 +86,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testScoped(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('restore playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -111,7 +113,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('restore playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$track = PlaylistTrack::factory()
|
||||
->for(Playlist::factory()->for($user))
|
||||
@@ -131,7 +133,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testRestored(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist track', 'restore playlist track'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -168,7 +170,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testRestoreFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist track', 'restore playlist track'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -212,7 +214,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testRestoreLast(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist track', 'restore playlist track'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -251,7 +253,7 @@ class TrackRestoreTest extends TestCase
|
||||
*/
|
||||
public function testRestoreSecond(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist track', 'restore playlist track'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(PlaylistTrack::class), ExtendedCrudPermission::RESTORE()->format(PlaylistTrack::class)])->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Http\Api\Field\Field;
|
||||
use App\Http\Api\Include\AllowedInclude;
|
||||
@@ -68,7 +69,7 @@ class TrackShowTest extends TestCase
|
||||
->for($playlist)
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -84,7 +85,7 @@ class TrackShowTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistTrackCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -154,7 +155,7 @@ class TrackShowTest extends TestCase
|
||||
*/
|
||||
public function testScoped(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use App\Models\List\Playlist\PlaylistTrack;
|
||||
@@ -76,7 +77,7 @@ class TrackStoreTest extends TestCase
|
||||
->for($playlist)
|
||||
->makeOne();
|
||||
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -92,7 +93,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -114,7 +115,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testProhibitsNextAndPrevious(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -153,7 +154,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testScopeNext(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -186,7 +187,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testScopePrevious(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -219,7 +220,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testCreate(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -252,7 +253,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testCreateAfterLastTrack(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$trackCount = $this->faker->numberBetween(2, 9);
|
||||
|
||||
@@ -298,7 +299,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testCreateAfterFirstTrack(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$trackCount = $this->faker->numberBetween(2, 9);
|
||||
|
||||
@@ -345,7 +346,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testCreateBeforeLastTrack(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$trackCount = $this->faker->numberBetween(2, 9);
|
||||
|
||||
@@ -392,7 +393,7 @@ class TrackStoreTest extends TestCase
|
||||
*/
|
||||
public function testCreateBeforeFirstTrack(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('create playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::CREATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$trackCount = $this->faker->numberBetween(2, 9);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Tests\Feature\Http\Api\List\Playlist\Track;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
@@ -92,7 +93,7 @@ class TrackUpdateTest extends TestCase
|
||||
[PlaylistTrack::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey()],
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -108,7 +109,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testScoped(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -140,7 +141,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testScopePrevious(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -178,7 +179,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testPreviousIsNotSelf(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -212,7 +213,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testScopeNext(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -250,7 +251,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testNextIsNotSelf(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -284,7 +285,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testProhibitsNextAndPrevious(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -328,7 +329,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testTrashed(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -371,7 +372,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testUpdate(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -402,7 +403,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertFirstAfterSecond(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -448,7 +449,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertFirstAfterThird(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -494,7 +495,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertFirstBeforeThird(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -540,7 +541,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertSecondAfterThird(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -586,7 +587,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertSecondBeforeFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -632,7 +633,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertThirdAfterFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -678,7 +679,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertThirdBeforeSecond(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -724,7 +725,7 @@ class TrackUpdateTest extends TestCase
|
||||
*/
|
||||
public function testInsertThirdBeforeFirst(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('update playlist track')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::UPDATE()->format(PlaylistTrack::class))->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\List\PlaylistImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -69,7 +70,7 @@ class PlaylistImageDestroyTest extends TestCase
|
||||
->for(Image::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete playlist', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -85,7 +86,7 @@ class PlaylistImageDestroyTest extends TestCase
|
||||
*/
|
||||
public function testNotFound(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
$playlist = Playlist::factory()
|
||||
->for($user)
|
||||
@@ -106,7 +107,7 @@ class PlaylistImageDestroyTest extends TestCase
|
||||
*/
|
||||
public function testDeleted(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['delete playlist', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Playlist::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
$playlistImage = PlaylistImage::factory()
|
||||
->for(Playlist::factory()->for($user))
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\List\PlaylistImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Enums\Models\List\PlaylistVisibility;
|
||||
use App\Enums\Models\Wiki\ImageFacet;
|
||||
use App\Http\Api\Field\Field;
|
||||
@@ -92,7 +93,7 @@ class PlaylistImageShowTest extends TestCase
|
||||
->for(Image::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermission('view playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -108,7 +109,7 @@ class PlaylistImageShowTest extends TestCase
|
||||
*/
|
||||
public function testPrivatePlaylistImageCanBeViewedByOwner(): void
|
||||
{
|
||||
$user = User::factory()->withPermission('view playlist')->createOne();
|
||||
$user = User::factory()->withPermission(CrudPermission::VIEW()->format(Playlist::class))->createOne();
|
||||
|
||||
$playlistImage = PlaylistImage::factory()
|
||||
->for(
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\List\PlaylistImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\List\Playlist;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -64,7 +65,7 @@ class PlaylistImageStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create playlist', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Playlist::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class PlaylistImageStoreTest extends TestCase
|
||||
PlaylistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create playlist', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Playlist::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -67,7 +68,7 @@ class AnimeImageDestroyTest extends TestCase
|
||||
$anime = Anime::factory()->createOne();
|
||||
$image = Image::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeImageDestroyTest extends TestCase
|
||||
->for(Image::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -64,7 +65,7 @@ class AnimeImageStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create anime', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeImageStoreTest extends TestCase
|
||||
AnimeImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create anime', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeResource;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\ExternalResource;
|
||||
@@ -67,7 +68,7 @@ class AnimeResourceDestroyTest extends TestCase
|
||||
$anime = Anime::factory()->createOne();
|
||||
$resource = ExternalResource::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete external resource'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeResourceDestroyTest extends TestCase
|
||||
->for(ExternalResource::factory(), AnimeResource::RELATION_RESOURCE)
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete external resource'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(ExternalResource::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeResource;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\ExternalResource;
|
||||
@@ -64,7 +65,7 @@ class AnimeResourceStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create anime', 'create external resource'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -89,7 +90,7 @@ class AnimeResourceStoreTest extends TestCase
|
||||
[AnimeResource::ATTRIBUTE_RESOURCE => ExternalResource::factory()->createOne()->getKey()],
|
||||
);
|
||||
|
||||
$user = User::factory()->withPermissions(['create anime', 'create external resource'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(ExternalResource::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeResource;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\ExternalResource;
|
||||
@@ -75,7 +76,7 @@ class AnimeResourceUpdateTest extends TestCase
|
||||
|
||||
$parameters = AnimeResource::factory()->raw();
|
||||
|
||||
$user = User::factory()->withPermissions(['update anime', 'update external resource'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::UPDATE()->format(Anime::class), CrudPermission::UPDATE()->format(ExternalResource::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeSeries;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Series;
|
||||
@@ -67,7 +68,7 @@ class AnimeSeriesDestroyTest extends TestCase
|
||||
$anime = Anime::factory()->createOne();
|
||||
$series = Series::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete series'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Series::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeSeriesDestroyTest extends TestCase
|
||||
->for(Series::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete series'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Series::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeSeries;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Series;
|
||||
@@ -64,7 +65,7 @@ class AnimeSeriesStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create anime', 'create series'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Series::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeSeriesStoreTest extends TestCase
|
||||
AnimeSeries::ATTRIBUTE_SERIES => Series::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create anime', 'create series'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Series::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeStudio;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Studio;
|
||||
@@ -67,7 +68,7 @@ class AnimeStudioDestroyTest extends TestCase
|
||||
$anime = Anime::factory()->createOne();
|
||||
$studio = Studio::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete studio'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Studio::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeStudioDestroyTest extends TestCase
|
||||
->for(Studio::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime', 'delete studio'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Anime::class), CrudPermission::DELETE()->format(Studio::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeStudio;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Studio;
|
||||
@@ -64,7 +65,7 @@ class AnimeStudioStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create anime', 'create studio'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Studio::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class AnimeStudioStoreTest extends TestCase
|
||||
AnimeStudio::ATTRIBUTE_STUDIO => Studio::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create anime', 'create studio'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Anime::class), CrudPermission::CREATE()->format(Studio::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
+3
-2
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeThemeEntryVideo;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Anime\AnimeTheme;
|
||||
@@ -72,7 +73,7 @@ class AnimeThemeEntryVideoDestroyTest extends TestCase
|
||||
|
||||
$video = Video::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime theme entry', 'delete video'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(AnimeThemeEntry::class), CrudPermission::DELETE()->format(Video::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -93,7 +94,7 @@ class AnimeThemeEntryVideoDestroyTest extends TestCase
|
||||
->for(Video::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete anime theme entry', 'delete video'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(AnimeThemeEntry::class), CrudPermission::DELETE()->format(Video::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
+3
-2
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\AnimeThemeEntryVideo;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Anime;
|
||||
use App\Models\Wiki\Anime\AnimeTheme;
|
||||
@@ -66,7 +67,7 @@ class AnimeThemeEntryVideoStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create anime theme entry', 'create video'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(AnimeThemeEntry::class), CrudPermission::CREATE()->format(Video::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -94,7 +95,7 @@ class AnimeThemeEntryVideoStoreTest extends TestCase
|
||||
AnimeThemeEntryVideo::ATTRIBUTE_VIDEO => Video::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create anime theme entry', 'create video'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(AnimeThemeEntry::class), CrudPermission::CREATE()->format(Video::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\ArtistImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Artist;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -67,7 +68,7 @@ class ArtistImageDestroyTest extends TestCase
|
||||
$artist = Artist::factory()->createOne();
|
||||
$image = Image::factory()->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete artist', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class ArtistImageDestroyTest extends TestCase
|
||||
->for(Image::factory())
|
||||
->createOne();
|
||||
|
||||
$user = User::factory()->withPermissions(['delete artist', 'delete image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::DELETE()->format(Artist::class), CrudPermission::DELETE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
@@ -4,6 +4,7 @@ declare(strict_types=1);
|
||||
|
||||
namespace Http\Api\Pivot\Wiki\ArtistImage;
|
||||
|
||||
use App\Enums\Auth\CrudPermission;
|
||||
use App\Models\Auth\User;
|
||||
use App\Models\Wiki\Artist;
|
||||
use App\Models\Wiki\Image;
|
||||
@@ -64,7 +65,7 @@ class ArtistImageStoreTest extends TestCase
|
||||
*/
|
||||
public function testRequiredFields(): void
|
||||
{
|
||||
$user = User::factory()->withPermissions(['create artist', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
@@ -88,7 +89,7 @@ class ArtistImageStoreTest extends TestCase
|
||||
ArtistImage::ATTRIBUTE_IMAGE => Image::factory()->createOne()->getKey(),
|
||||
];
|
||||
|
||||
$user = User::factory()->withPermissions(['create artist', 'create image'])->createOne();
|
||||
$user = User::factory()->withPermissions([CrudPermission::CREATE()->format(Artist::class), CrudPermission::CREATE()->format(Image::class)])->createOne();
|
||||
|
||||
Sanctum::actingAs($user);
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user