diff --git a/modules/Permissions/Http/Controllers/RolesController.php b/modules/Permissions/Http/Controllers/RolesController.php index 3397ef2..1681265 100644 --- a/modules/Permissions/Http/Controllers/RolesController.php +++ b/modules/Permissions/Http/Controllers/RolesController.php @@ -20,7 +20,6 @@ class RolesController extends Controller ) { } - /** * @return mixed */ @@ -29,7 +28,7 @@ class RolesController extends Controller return $this->model->setBeforeGetList(function ($query) { return $query->with(['permissions' => function ($query) { $query->select('id'); - }])->dataRange(); + }]); })->getList(); } diff --git a/modules/Permissions/Installer.php b/modules/Permissions/Installer.php index d82aa1f..d2070a4 100644 --- a/modules/Permissions/Installer.php +++ b/modules/Permissions/Installer.php @@ -1,8 +1,9 @@ belongsToMany(Departments::class, 'role_has_departments', 'role_id', 'department_id'); } + + /** + * get role's permissions + * @return Collection + */ + public function getPermissions(): Collection + { + return $this->permissions()->get(); + } + + /** + * get role's departments + * @return Collection + */ + public function getDepartments(): Collection + { + return $this->departments()->get(); + } } diff --git a/modules/User/Models/Traits/UserRelations.php b/modules/User/Models/Traits/UserRelations.php index 29bb0cd..203da2f 100644 --- a/modules/User/Models/Traits/UserRelations.php +++ b/modules/User/Models/Traits/UserRelations.php @@ -7,6 +7,7 @@ use Catch\Support\Module\ModuleRepository; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Route; +use Illuminate\Support\Str; use Modules\Permissions\Models\Permissions; trait UserRelations @@ -106,6 +107,12 @@ trait UserRelations } }); + if ($permission) { + [$module, $controller, $action] = explode('@', $permission); + + $permission = CatchAdmin::getModuleControllerNamespace($module).$controller.'Controller@'.$action; + } + return $actions->contains($permission ?: Route::currentRouteAction()); }