Mercurial > hg > isophonics-drupal-site
annotate core/modules/user/src/Access/PermissionAccessCheck.php @ 17:129ea1e6d783
Update, including to Drupal core 8.6.10
author | Chris Cannam |
---|---|
date | Thu, 28 Feb 2019 13:21:36 +0000 |
parents | 4c8ae668cc8c |
children |
rev | line source |
---|---|
Chris@0 | 1 <?php |
Chris@0 | 2 |
Chris@0 | 3 namespace Drupal\user\Access; |
Chris@0 | 4 |
Chris@0 | 5 use Drupal\Core\Access\AccessResult; |
Chris@0 | 6 use Drupal\Core\Routing\Access\AccessInterface; |
Chris@0 | 7 use Drupal\Core\Session\AccountInterface; |
Chris@0 | 8 use Symfony\Component\Routing\Route; |
Chris@0 | 9 |
Chris@0 | 10 /** |
Chris@0 | 11 * Determines access to routes based on permissions defined via |
Chris@0 | 12 * $module.permissions.yml files. |
Chris@0 | 13 */ |
Chris@0 | 14 class PermissionAccessCheck implements AccessInterface { |
Chris@0 | 15 |
Chris@0 | 16 /** |
Chris@0 | 17 * Checks access. |
Chris@0 | 18 * |
Chris@0 | 19 * @param \Symfony\Component\Routing\Route $route |
Chris@0 | 20 * The route to check against. |
Chris@0 | 21 * @param \Drupal\Core\Session\AccountInterface $account |
Chris@0 | 22 * The currently logged in account. |
Chris@0 | 23 * |
Chris@0 | 24 * @return \Drupal\Core\Access\AccessResultInterface |
Chris@0 | 25 * The access result. |
Chris@0 | 26 */ |
Chris@0 | 27 public function access(Route $route, AccountInterface $account) { |
Chris@0 | 28 $permission = $route->getRequirement('_permission'); |
Chris@0 | 29 |
Chris@0 | 30 if ($permission === NULL) { |
Chris@0 | 31 return AccessResult::neutral(); |
Chris@0 | 32 } |
Chris@0 | 33 |
Chris@0 | 34 // Allow to conjunct the permissions with OR ('+') or AND (','). |
Chris@0 | 35 $split = explode(',', $permission); |
Chris@0 | 36 if (count($split) > 1) { |
Chris@0 | 37 return AccessResult::allowedIfHasPermissions($account, $split, 'AND'); |
Chris@0 | 38 } |
Chris@0 | 39 else { |
Chris@0 | 40 $split = explode('+', $permission); |
Chris@0 | 41 return AccessResult::allowedIfHasPermissions($account, $split, 'OR'); |
Chris@0 | 42 } |
Chris@0 | 43 } |
Chris@0 | 44 |
Chris@0 | 45 } |