![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/dceprojects.corals.io/Corals/core/User/Classes/ |
<?php namespace Corals\User\Classes; use Corals\User\Models\Permission; use Corals\User\Models\Role; class Roles { /** * Roles constructor. */ function __construct() { } public function getRolesList($options = []) { $key = $options['key'] ?? 'id'; return Role::pluck('label', $key); } public function getRolesListForLoggedInUser($options = []) { if (isSuperUser()) { return $this->getRolesList($options); } $key = $options['key'] ?? 'id'; $roleGroupsUserCanManage = Role::query()->whereNotNull('can_manage_roles')->whereIn('id', user()->roles->pluck('id')->toArray())->pluck('can_manage_roles'); if ($roleGroupsUserCanManage->isEmpty()) { return collect([]); } // if the user have 2 roles, so we get the all roles allow for this user to manage and then get the unique roles from array in final step $rolesCanUserManage = []; foreach ($roleGroupsUserCanManage as $roleGroup) { $rolesCanUserManage = array_merge($rolesCanUserManage, $roleGroup); } return Role::query() ->whereIn('id', $rolesCanUserManage) ->pluck('label', $key); } public function getPermissionsTree() { $tree = []; $permissions = Permission::get(); foreach ($permissions as $permission) { list($package, $model) = explode('::', $permission->name); list($model, $action) = explode('.', $model); if (!isset($tree[$package])) { $tree[$package] = []; } if (!isset($tree[$package][$model])) { $tree[$package][$model] = []; } $tree[$package][$model][$permission->id] = $action; } return $tree; } }