New_Micro_Learning/backend/app/Modules/Identity/Application/RolePermissions.php

58 خطوط
1.9 KiB
PHP

<?php
namespace App\Modules\Identity\Application;
use App\Models\User;
use App\Modules\Identity\Domain\Enums\Permission;
use App\Modules\Identity\Domain\Enums\UserRole;
final class RolePermissions
{
/** @return list<Permission> */
public function for(UserRole $role): array
{
return match ($role) {
UserRole::SuperAdmin => [
Permission::PlatformManageOrganizations,
Permission::PlatformViewOperations,
],
UserRole::CourseDesigner => [
Permission::UsersView,
Permission::UsersInvite,
Permission::UsersManage,
Permission::TeamsView,
Permission::TeamsManage,
Permission::SubscriptionView,
Permission::TaxonomyView,
Permission::TaxonomyManage,
Permission::CoursesAuthor,
Permission::CoursesReview,
Permission::CoursesPublish,
Permission::AssignmentsManage,
Permission::OrganizationAnalyticsView,
],
UserRole::Manager => [
Permission::UsersView,
Permission::TeamsView,
Permission::TaxonomyView,
Permission::TeamAnalyticsView,
Permission::CoursesReview,
Permission::PersonalLearningView,
Permission::ManagerAssignmentsManage,
Permission::ManagerDeadlinesManage,
Permission::ManagerRemindersSend,
],
UserRole::Learner => [
Permission::PersonalLearningView,
],
};
}
public function allows(User|UserRole $subject, Permission $permission): bool
{
$role = $subject instanceof User ? $subject->role : $subject;
return in_array($permission, $this->for($role), true);
}
}