Same filename and directory in other branches
- 8.9.x core/modules/user/src/Access/RoleAccessCheck.php
- 9 core/modules/user/src/Access/RoleAccessCheck.php
Namespace
Drupal\user\Access
File
core/modules/user/src/Access/RoleAccessCheck.php
View source
<?php
namespace Drupal\user\Access;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Session\AccountInterface;
use Symfony\Component\Routing\Route;
class RoleAccessCheck implements AccessInterface {
public function access(Route $route, AccountInterface $account) {
$rid_string = $route
->getRequirement('_role');
$explode_and = array_filter(array_map('trim', explode(',', $rid_string)));
if (count($explode_and) > 1) {
$diff = array_diff($explode_and, $account
->getRoles());
if (empty($diff)) {
return AccessResult::allowed()
->addCacheContexts([
'user.roles',
]);
}
}
else {
$explode_or = array_filter(array_map('trim', explode('+', $rid_string)));
$intersection = array_intersect($explode_or, $account
->getRoles());
if (!empty($intersection)) {
return AccessResult::allowed()
->addCacheContexts([
'user.roles',
]);
}
}
return AccessResult::neutral()
->addCacheContexts([
'user.roles',
]);
}
}
Classes