Skip to content
Snippets Groups Projects

Patch #52

Open Karl Shea requested to merge issue/group-2815971:2815971-2-more-contexts-needed into 2.3.x
Files
6
@@ -6,7 +6,7 @@ use Drupal\Core\Access\AccessResult;
@@ -6,7 +6,7 @@ use Drupal\Core\Access\AccessResult;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Routing\RouteMatchInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\group\Entity\GroupInterface;
use Drupal\group\Context\GroupRouteContext;
use Symfony\Component\Routing\Route;
use Symfony\Component\Routing\Route;
/**
/**
@@ -14,6 +14,23 @@ use Symfony\Component\Routing\Route;
@@ -14,6 +14,23 @@ use Symfony\Component\Routing\Route;
*/
*/
class GroupPermissionAccessCheck implements AccessInterface {
class GroupPermissionAccessCheck implements AccessInterface {
 
/**
 
* The group route context.
 
*
 
* @var \Drupal\group\Context\GroupRouteContext
 
*/
 
protected $groupRouteContext;
 
 
/**
 
* Constructs a new GroupPermissionAccessCheck.
 
*
 
* @param \Drupal\group\Context\GroupRouteContext $group_route_context
 
* Group context provider.
 
*/
 
public function __construct(GroupRouteContext $group_route_context) {
 
$this->groupRouteContext = $group_route_context;
 
}
 
/**
/**
* Checks access.
* Checks access.
*
*
@@ -30,20 +47,9 @@ class GroupPermissionAccessCheck implements AccessInterface {
@@ -30,20 +47,9 @@ class GroupPermissionAccessCheck implements AccessInterface {
public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) {
public function access(Route $route, RouteMatchInterface $route_match, AccountInterface $account) {
$permission = $route->getRequirement('_group_permission');
$permission = $route->getRequirement('_group_permission');
// Don't interfere if no permission was specified.
// Don't interfere if no group available.
if ($permission === NULL) {
$group = $this->groupRouteContext->getBestCandidate();
return AccessResult::neutral();
if (!$group) {
}
// Don't interfere if no group was specified.
$parameters = $route_match->getParameters();
if (!$parameters->has('group')) {
return AccessResult::neutral();
}
// Don't interfere if the group isn't a real group.
$group = $parameters->get('group');
if (!$group instanceof GroupInterface) {
return AccessResult::neutral();
return AccessResult::neutral();
}
}
Loading