You are here

public function WishlistUserAccessCheck::checkAccess in Commerce Wishlist 8.3

Checks access to the given user's wishlist pages.

Parameters

\Drupal\Core\Routing\RouteMatchInterface $route_match: The route match.

\Drupal\Core\Session\AccountInterface $account: The currently logged in account.

Return value

\Drupal\Core\Access\AccessResultInterface The access result.

File

src/Access/WishlistUserAccessCheck.php, line 25

Class

WishlistUserAccessCheck
Access check for wishlist user pages (user_form and share_form routes).

Namespace

Drupal\commerce_wishlist\Access

Code

public function checkAccess(RouteMatchInterface $route_match, AccountInterface $account) {
  if ($account
    ->hasPermission('administer commerce_wishlist')) {

    // Administrators can modify anyone's wishlst.
    $access = AccessResult::allowed()
      ->cachePerPermissions();
  }
  else {

    // Users can modify own wishlists.
    $user = $route_match
      ->getParameter('user');
    if ($account
      ->isAuthenticated()) {
      $access = AccessResult::allowedIf($account
        ->isAuthenticated())
        ->andIf(AccessResult::allowedIf($user
        ->id() == $account
        ->id()))
        ->cachePerUser();
    }
    else {
      $access = AccessResult::allowedIf($user
        ->id() == '0')
        ->addCacheContexts([
        'wishlist',
      ]);
    }
  }
  return $access;
}