o365-2.0.3/modules/o365_groups/src/Access/O365GroupsFilesControllerAccessCheck.php

modules/o365_groups/src/Access/O365GroupsFilesControllerAccessCheck.php
<?php

namespace Drupal\o365_groups\Access;

use Drupal\Core\Access\AccessResult;
use Drupal\Core\Access\AccessResultAllowed;
use Drupal\Core\Access\AccessResultForbidden;
use Drupal\Core\Routing\Access\AccessInterface;
use Drupal\Core\Session\AccountInterface;
use Drupal\group\Entity\Group;
use Drupal\o365_groups\GroupsService;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RequestStack;

/**
 * Access check class for the files controller.
 */
class O365GroupsFilesControllerAccessCheck implements AccessInterface {

  /**
   * The current request.
   *
   * @var \Symfony\Component\HttpFoundation\Request|null
   */
  protected ?Request $request;

  /**
   * The groups service.
   *
   * @var \Drupal\o365_groups\GroupsService
   */
  protected GroupsService $groupsService;

  /**
   * Constructor for the O365GroupsFilesControllerAccessCheck class.
   *
   * @param \Symfony\Component\HttpFoundation\RequestStack $requestStack
   *   The request stack.
   * @param \Drupal\o365_groups\GroupsService $groupsService
   *   The groups service.
   */
  public function __construct(RequestStack $requestStack, GroupsService $groupsService) {
    $this->request = $requestStack->getCurrentRequest();
    $this->groupsService = $groupsService;
  }

  /**
   * Access check method.
   *
   * @param \Drupal\Core\Session\AccountInterface $account
   *   The current user account.
   *
   * @return \Drupal\Core\Access\AccessResultAllowed|\Drupal\Core\Access\AccessResultForbidden
   *   Whether the user has access.
   */
  public function access(AccountInterface $account): AccessResultForbidden|AccessResultAllowed {
    $group = $this->request->get('group');

    // Allowed to visit this page when there is a group and teams ID.
    if ($group) {
      if (is_string($group)) {
        $group = Group::load($group);
      }

      if ($group) {
        $teamsIdField = $this->groupsService->getTeamsUuidForGroup($group->id(), TRUE);
        if (!empty($teamsIdField)) {
          return AccessResult::allowed();
        }
      }
    }

    // Default is forbidden.
    return AccessResult::forbidden();
  }

}

Главная | Обратная связь

drupal hosting | друпал хостинг | it patrol .inc