Chris@0: getRequirement('_role'); Chris@0: Chris@0: $explode_and = array_filter(array_map('trim', explode(',', $rid_string))); Chris@0: if (count($explode_and) > 1) { Chris@0: $diff = array_diff($explode_and, $account->getRoles()); Chris@0: if (empty($diff)) { Chris@0: return AccessResult::allowed()->addCacheContexts(['user.roles']); Chris@0: } Chris@0: } Chris@0: else { Chris@0: $explode_or = array_filter(array_map('trim', explode('+', $rid_string))); Chris@0: $intersection = array_intersect($explode_or, $account->getRoles()); Chris@0: if (!empty($intersection)) { Chris@0: return AccessResult::allowed()->addCacheContexts(['user.roles']); Chris@0: } Chris@0: } Chris@0: Chris@0: // If there is no allowed role, give other access checks a chance. Chris@0: return AccessResult::neutral()->addCacheContexts(['user.roles']); Chris@0: } Chris@0: Chris@0: }