You are here

public static function GroupAccessResult::allowedIfHasGroupPermissions in Group 2.0.x

Same name and namespace in other branches
  1. 8 src/Access/GroupAccessResult.php \Drupal\group\Access\GroupAccessResult::allowedIfHasGroupPermissions()

Allows access if the permissions are present, neutral otherwise.

@todo Keep an eye on the following with regard to using the current user:

Parameters

\Drupal\group\Entity\GroupInterface $group: The group for which to check permissions.

\Drupal\Core\Session\AccountInterface $account: The account for which to check permissions.

array $permissions: The permissions to check.

string $conjunction: (optional) 'AND' if all permissions are required, 'OR' in case just one. Defaults to 'AND'.

Return value

\Drupal\Core\Access\AccessResult If the account has the permissions, isAllowed() will be TRUE, otherwise isNeutral() will be TRUE.

4 calls to GroupAccessResult::allowedIfHasGroupPermissions()
AccessControl::entityAccess in src/Plugin/Group/RelationHandlerDefault/AccessControl.php
Checks access to an operation on the entity.
AccessControl::relationAccess in src/Plugin/Group/RelationHandlerDefault/AccessControl.php
Checks access to an operation on the relation.
AccessControlTrait::combinedPermissionCheck in src/Plugin/Group/RelationHandler/AccessControlTrait.php
Checks the provided permission alongside the admin permission.
GroupPermissionAccessCheck::access in src/Access/GroupPermissionAccessCheck.php
Checks access.

File

src/Access/GroupAccessResult.php, line 57

Class

GroupAccessResult
Extends the AccessResult class with group permission checks.

Namespace

Drupal\group\Access

Code

public static function allowedIfHasGroupPermissions(GroupInterface $group, AccountInterface $account, array $permissions, $conjunction = 'AND') {
  $access = FALSE;
  if ($conjunction == 'AND' && !empty($permissions)) {
    $access = TRUE;
    foreach ($permissions as $permission) {
      if (!$group
        ->hasPermission($permission, $account)) {
        $access = FALSE;
        break;
      }
    }
  }
  else {
    foreach ($permissions as $permission) {
      if ($group
        ->hasPermission($permission, $account)) {
        $access = TRUE;
        break;
      }
    }
  }
  return static::allowedIf($access)
    ->addCacheContexts([
    'user.group_permissions',
  ]);
}