Version 1
[yaffs-website] / vendor / drupal / console / templates / module / src / Authentication / Provider / authentication-provider.php.twig
diff --git a/vendor/drupal/console/templates/module/src/Authentication/Provider/authentication-provider.php.twig b/vendor/drupal/console/templates/module/src/Authentication/Provider/authentication-provider.php.twig
new file mode 100644 (file)
index 0000000..4be1011
--- /dev/null
@@ -0,0 +1,114 @@
+{% 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 }}.
+ *
+ * @package Drupal\{{module}}\Authentication\Provider
+ */
+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 %}