degov-8.x-2.0/modules/degov_users_roles/src/Access/UserEditAccessCheck.php

modules/degov_users_roles/src/Access/UserEditAccessCheck.php
<?php

namespace Drupal\degov_users_roles\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Routing\RouteMatch;
use Drupal\Core\Session\AccountProxy;
use Drupal\user\UserInterface;

/**
 * Class UserEditAccessCheck
 *
 * @package Drupal\degov_users_roles\Access
 */
class UserEditAccessCheck implements AccessInterface {

  /**
   * A custom access check.
   *
   * @param \Drupal\Core\Session\AccountProxy $account
   *   Run access checks for this account.
   *
   * @param \Drupal\Core\Routing\RouteMatch $route_match
   *
   * @return \Drupal\Core\Access\AccessResult
   */
  public function access(AccountProxy $account, RouteMatch $route_match) {
    /** @var \Drupal\user\UserInterface $userToEdit */
    // Only allow users with the administrator role to edit users with the administrator role.
    $userToEdit = $route_match->getParameter('user');
    if ($userToEdit && $userToEdit instanceof UserInterface && $userToEdit->hasRole('administrator')) {
      $current_user_roles = $account->getAccount()->getRoles();
      return AccessResult::allowedIf(in_array('administrator', $current_user_roles));
    }

    return AccessResult::allowed();
  }
}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc