54 lines
1.4 KiB
PHP
54 lines
1.4 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Enums;
|
|
|
|
enum Permission: string
|
|
{
|
|
case Role = 'role';
|
|
case User = 'user';
|
|
|
|
public function getPermissions(): array
|
|
{
|
|
return $this->getBasePermissions();
|
|
}
|
|
|
|
public function getTitle(): string
|
|
{
|
|
return __('permissions.' . $this->name);
|
|
}
|
|
|
|
public function formatValue(string $permission): string
|
|
{
|
|
return $this->value . '.' . $permission;
|
|
}
|
|
|
|
public static function toArrayList(): array
|
|
{
|
|
$permissions = [];
|
|
foreach (self::cases() as $permissionEnum) {
|
|
foreach ($permissionEnum->getPermissions() as $permissionName => $permissionTitle) {
|
|
$name = $permissionEnum->formatValue($permissionName);
|
|
$title = $permissionEnum->getTitle() . ' - ' . $permissionTitle;
|
|
$permissions[$name] = $title;
|
|
}
|
|
}
|
|
|
|
return $permissions;
|
|
}
|
|
|
|
public static function toArrayListCodes(): array
|
|
{
|
|
return \array_keys(self::toArrayList());
|
|
}
|
|
|
|
private function getBasePermissions(): array
|
|
{
|
|
return [
|
|
'view' => __('permissions.Allowed to watch'),
|
|
'create' => __('permissions.Allowed to create'),
|
|
'update' => __('permissions.Allowed to edit'),
|
|
'delete' => __('permissions.Allowed to delete'),
|
|
];
|
|
}
|
|
}
|