{% extends "base/class.php.twig" %} {% block file_path %} \Drupal\{{module}}\Authentication\Provider\{{class}}. {% endblock %} {% block namespace_class %} namespace Drupal\{{module}}\Authentication\Provider; {% endblock %} {% block use_class %} use Drupal\Core\Authentication\AuthenticationProviderInterface; use Drupal\Core\Config\ConfigFactoryInterface; use Drupal\Core\Entity\EntityTypeManagerInterface; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpKernel\Event\GetResponseForExceptionEvent; use Symfony\Component\HttpKernel\Exception\UnauthorizedHttpException; use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException; {% endblock %} {% block class_declaration %} /** * Class {{ class }}. */ class {{ class }} implements AuthenticationProviderInterface {% endblock %} {% block class_variables %} /** * The config factory. * * @var \Drupal\Core\Config\ConfigFactoryInterface */ protected $configFactory; /** * The entity type manager. * * @var \Drupal\Core\Entity\EntityTypeManagerInterface */ protected $entityTypeManager; {% endblock %} {% block class_construct %} /** * Constructs a HTTP basic authentication provider object. * * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory * The config factory. * @param \Drupal\Core\Entity\EntityTypeManagerInterface $entity_type_manager * The entity type manager service. */ public function __construct(ConfigFactoryInterface $config_factory, EntityTypeManagerInterface $entity_type_manager) { $this->configFactory = $config_factory; $this->entityTypeManager = $entity_type_manager; } {% endblock %} {% block class_create %} {% endblock %} {% block class_methods %} /** * Checks whether suitable authentication credentials are on the request. * * @param \Symfony\Component\HttpFoundation\Request $request * The request object. * * @return bool * TRUE if authentication credentials suitable for this provider are on the * request, FALSE otherwise. */ public function applies(Request $request) { // If you return TRUE and the method Authentication logic fails, // you will get out from Drupal navigation if you are logged in. return FALSE; } /** * {@inheritdoc} */ public function authenticate(Request $request) { $consumer_ip = $request->getClientIp(); $ips = []; if (in_array($consumer_ip, $ips)) { // Return Anonymous user. return $this->entityTypeManager->getStorage('user')->load(0); } else { throw new AccessDeniedHttpException(); } } /** * {@inheritdoc} */ public function cleanup(Request $request) {} /** * {@inheritdoc} */ public function handleException(GetResponseForExceptionEvent $event) { $exception = $event->getException(); if ($exception instanceof AccessDeniedHttpException) { $event->setException( new UnauthorizedHttpException('Invalid consumer origin.', $exception) ); return TRUE; } return FALSE; } {% endblock %}