DelegatableRoles.php in Role Delegation 8
File
src/DelegatableRoles.php
View source
<?php
namespace Drupal\role_delegation;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\user\Entity\Role;
use Drupal\user\RoleInterface;
class DelegatableRoles implements DelegatableRolesInterface {
use StringTranslationTrait;
public static $emptyFieldValue = [
'__role_delegation_empty_field_value__',
];
public function getAssignableRoles(AccountInterface $account) {
$assignable_roles = [];
foreach ($this
->getAllRoles() as $role) {
if ($account
->hasPermission('assign all roles') || $account
->hasPermission(sprintf('assign %s role', $role
->id()))) {
$assignable_roles[$role
->id()] = $role
->label();
}
}
return $assignable_roles;
}
public function getAllRoles() {
$all_roles = Role::loadMultiple();
unset($all_roles[RoleInterface::ANONYMOUS_ID], $all_roles[RoleInterface::AUTHENTICATED_ID]);
return $all_roles;
}
}