You are here

public function MultipleRegistrationController::access in Multiple Registration 8.2

Same name and namespace in other branches
  1. 8 src/Controller/MultipleRegistrationController.php \Drupal\multiple_registration\Controller\MultipleRegistrationController::access()
  2. 3.x src/Controller/MultipleRegistrationController.php \Drupal\multiple_registration\Controller\MultipleRegistrationController::access()

Checks access for register page.

Parameters

\Drupal\Core\Session\AccountInterface $account: Run access checks for this account.

Return value

\Drupal\Core\Access\AccessResult Returns access result.

1 string reference to 'MultipleRegistrationController::access'
multiple_registration.routing.yml in ./multiple_registration.routing.yml
multiple_registration.routing.yml

File

src/Controller/MultipleRegistrationController.php, line 117

Class

MultipleRegistrationController
Class MultipleRegistrationController.

Namespace

Drupal\multiple_registration\Controller

Code

public function access(AccountInterface $account) {
  $registerAccessCheck = new RegisterAccessCheck();
  $clear_roles_list = [];
  $page_access_config = $this
    ->config('multiple_registration.access_settings_page_form_config');
  $page_access_roles_whitelist = $page_access_config
    ->get('multiple_registration_pages_white_list');
  if (is_array($page_access_roles_whitelist)) {
    foreach ($page_access_roles_whitelist as $role) {
      if (!empty($role)) {
        $clear_roles_list[] = $role;
      }
    }
  }

  // Allow user to access this page if user is authenticated.
  if ($account
    ->isAuthenticated()) {
    return AccessResult::allowed();
  }

  // Disabling non-whitelisted roles registration pages.
  $rid = $this->routeMatch
    ->getParameter('rid');
  if ($rid !== NULL && !\in_array($rid, $clear_roles_list, TRUE)) {
    return AccessResult::forbidden();
  }

  // Check access by permissions system.
  return AccessResult::allowedIf($account
    ->hasPermission('administer multiple_registration') || $registerAccessCheck
    ->access($account)
    ->isAllowed());
}