84 lines
2.6 KiB
PHP
84 lines
2.6 KiB
PHP
<?php declare(strict_types=1);
|
|
|
|
namespace App\Enums;
|
|
|
|
enum Permission: string
|
|
{
|
|
case AdminPanel = 'allow-admin-panel';
|
|
case Role = 'role';
|
|
case User = 'user';
|
|
case Project = 'project';
|
|
case ProjectContent = 'project-content';
|
|
case ProjectLink = 'project-link';
|
|
case ProjectTranslation = 'project-translation';
|
|
case ProjectFeedback = 'project-feedback';
|
|
case Documentation = 'documentation';
|
|
case DocumentationCategory = 'documentation-category';
|
|
|
|
public function getPermissions(): array
|
|
{
|
|
$permissions = match ($this) {
|
|
self::AdminPanel => [
|
|
'view' => __('permissions.Administrative panel allowed'),
|
|
],
|
|
self::Project => array_merge($this->getBasePermissions(), [
|
|
'Setting up automatic translation' => __('permissions.Setting up automatic translation'),
|
|
]),
|
|
self::ProjectContent => [
|
|
'view' => __('permissions.Allowed to watch'),
|
|
'create' => __('permissions.Allowed to create'),
|
|
'update' => __('permissions.Allowed to edit'),
|
|
],
|
|
self::ProjectTranslation => [
|
|
'view' => __('permissions.Allowed to watch'),
|
|
'update' => __('permissions.Allowed to edit'),
|
|
],
|
|
self::ProjectFeedback => [
|
|
'view' => __('permissions.Allowed to watch'),
|
|
],
|
|
default => $this->getBasePermissions()
|
|
};
|
|
|
|
return $permissions;
|
|
}
|
|
|
|
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'),
|
|
];
|
|
}
|
|
}
|