contacts_events-8.x-1.x-dev/modules/teams/src/Access/TeamsAccessChecker.php
modules/teams/src/Access/TeamsAccessChecker.php
<?php
namespace Drupal\contacts_events_teams\Access;
use Drupal\contacts_events\Entity\EventInterface;
use Drupal\contacts_events_teams\Entity\TeamInterface;
use Drupal\Core\Access\AccessResult;
use Drupal\Core\Access\AccessResultReasonInterface;
use Drupal\Core\Routing\Access\AccessInterface;
/**
* Checks if teams are enabled for the event.
*/
class TeamsAccessChecker implements AccessInterface {
/**
* Access callback.
*
* @param \Drupal\contacts_events\Entity\EventInterface $contacts_event
* The event we are checking teams access for.
*
* @return \Drupal\Core\Access\AccessResultInterface
* The access result.
*/
public function access(EventInterface $contacts_event) {
$result = AccessResult::allowedIf($contacts_event->getSetting('teams.enabled', TeamInterface::STATUS_CLOSED) != TeamInterface::STATUS_CLOSED)
->addCacheableDependency($contacts_event);
if ($result instanceof AccessResultReasonInterface) {
$result->setReason('Teams are not enabled for this event.');
}
return $result;
}
}
