You are here

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.
 *
 * @package Drupal\role_delegation
 */
class DelegatableRoles implements DelegatableRolesInterface {
  use StringTranslationTrait;

  /**
   * A value used to indicate that nothing has been submitted.
   *
   * @var array
   */
  public static $emptyFieldValue = [
    '__role_delegation_empty_field_value__',
  ];

  /**
   * {@inheritdoc}
   */
  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;
  }

  /**
   * {@inheritdoc}
   */
  public function getAllRoles() {
    $all_roles = Role::loadMultiple();
    unset($all_roles[RoleInterface::ANONYMOUS_ID], $all_roles[RoleInterface::AUTHENTICATED_ID]);
    return $all_roles;
  }

}

Classes

Namesort descending Description
DelegatableRoles Class DelegatableRoles.