
| Current Path : /var/www/html/rocksensor1/web/core/lib/Drupal/Core/Session/ |
Linux ift1.ift-informatik.de 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64 |
| Current File : /var/www/html/rocksensor1/web/core/lib/Drupal/Core/Session/UserRolesAccessPolicy.php |
<?php
declare(strict_types=1);
namespace Drupal\Core\Session;
use Drupal\Core\Entity\EntityTypeManagerInterface;
/**
* Grants permissions based on a user's roles.
*/
final class UserRolesAccessPolicy extends AccessPolicyBase {
public function __construct(protected EntityTypeManagerInterface $entityTypeManager) {}
/**
* {@inheritdoc}
*/
public function calculatePermissions(AccountInterface $account, string $scope): RefinableCalculatedPermissionsInterface {
$calculated_permissions = parent::calculatePermissions($account, $scope);
/** @var \Drupal\user\RoleInterface[] $user_roles */
$user_roles = $this->entityTypeManager->getStorage('user_role')->loadMultiple($account->getRoles());
foreach ($user_roles as $user_role) {
$calculated_permissions
->addItem(new CalculatedPermissionsItem($user_role->getPermissions(), $user_role->isAdmin()))
->addCacheableDependency($user_role);
}
return $calculated_permissions;
}
/**
* {@inheritdoc}
*/
public function getPersistentCacheContexts(): array {
return ['user.roles'];
}
}