diff --git a/code/app/Models/Concerns/RoleableTrait.php b/code/app/Models/Concerns/RoleableTrait.php index 27c8efde..42eeee47 100644 --- a/code/app/Models/Concerns/RoleableTrait.php +++ b/code/app/Models/Concerns/RoleableTrait.php @@ -29,6 +29,25 @@ public function getManagedRolesAttribute() return Role::sortedByHierarchy($all_roles == false); } + public function checkRoleTargets($role) + { + $test = $this->roles()->where('roles.id', $role->id)->first(); + if ($test) { + $classes = $role->getAllClasses(); + foreach($classes as $class) { + $targets = $test->applications(true, false, $class); + if ($targets->isEmpty()) { + return false; + } + } + + return true; + } + else { + return false; + } + } + public function addRole($role, $assigned) { $role_id = normalizeId($role); diff --git a/code/app/Role.php b/code/app/Role.php index 5fdd58da..64422736 100644 --- a/code/app/Role.php +++ b/code/app/Role.php @@ -242,7 +242,10 @@ public function appliesOnly($obj) /* Questa funzione va chiamata solo sugli oggetti Role restituiti da User::roles(), in quanto si applica solo sull'istanza del ruolo - assegnata ad uno specifico utente + assegnata ad uno specifico utente. + Verifica se il ruolo si applica a tutti i soggetti della classe + specificata (o più in generale a tutti i soggetti di tutte le classi + disponibili) */ public function appliesAll($class = null) { @@ -268,7 +271,8 @@ public function appliesAll($class = null) /* Questa funzione va chiamata solo sugli oggetti Role restituiti da User::roles(), in quanto si applica solo sull'istanza del ruolo - assegnata ad uno specifico utente + assegnata ad uno specifico utente. + Restituisce l'elenco dei soggetti cui il ruolo si applica */ public function applications($all = false, $exclude_trashed = false, $target_class = null) { diff --git a/code/resources/views/permissions/edit.blade.php b/code/resources/views/permissions/edit.blade.php index ccf271fa..081561d8 100644 --- a/code/resources/views/permissions/edit.blade.php +++ b/code/resources/views/permissions/edit.blade.php @@ -39,6 +39,9 @@