From 1d081ee88dced43fef920aa656dd265e77dd0d93 Mon Sep 17 00:00:00 2001 From: arsh244 <arsh244s@gmail.com> Date: Tue, 1 Nov 2022 11:42:28 +0530 Subject: [PATCH] fixed installation time bug, added support for user login endpoint --- rest_api_authentication.routing.yml | 2 +- rest_api_authentication.services.yml | 4 +++ src/Authentication/Provider/restAPI.php | 3 +++ src/Routing/RouteSubscriber.php | 34 +++++++++++++++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 src/Routing/RouteSubscriber.php diff --git a/rest_api_authentication.routing.yml b/rest_api_authentication.routing.yml index a5c861e..d9e4ae6 100644 --- a/rest_api_authentication.routing.yml +++ b/rest_api_authentication.routing.yml @@ -11,7 +11,7 @@ rest_api_authentication.request_api_support: path: /admin/config/people/rest_api_authentication/requestSupport defaults: _title: 'miniOrange API Authentication Request Support' - _controller: '\Drupal\rest_api_authentication\Form\rest_api_authenticationController::openSupportRequestForm' + _controller: '\Drupal\rest_api_authentication\Controller\rest_api_authenticationController::openSupportRequestForm' requirements: _permission: 'administer site configuration' diff --git a/rest_api_authentication.services.yml b/rest_api_authentication.services.yml index e91ec76..062866a 100644 --- a/rest_api_authentication.services.yml +++ b/rest_api_authentication.services.yml @@ -9,3 +9,7 @@ services: public: false tags: - { name: page_cache_request_policy } + rest_api_authentication.route_subscriber: + class: Drupal\rest_api_authentication\Routing\RouteSubscriber + tags: + - { name: event_subscriber } diff --git a/src/Authentication/Provider/restAPI.php b/src/Authentication/Provider/restAPI.php index 825ea57..a04dafc 100644 --- a/src/Authentication/Provider/restAPI.php +++ b/src/Authentication/Provider/restAPI.php @@ -69,6 +69,9 @@ class restAPI implements AuthenticationProviderInterface { $api_error = array(); + if ($request->getPathInfo() == "/user/login") { + return null; + } $authentication_method = \Drupal::config('rest_api_authentication.settings')->get('authentication_method'); switch ($authentication_method) { case 0: diff --git a/src/Routing/RouteSubscriber.php b/src/Routing/RouteSubscriber.php new file mode 100644 index 0000000..1a79fbb --- /dev/null +++ b/src/Routing/RouteSubscriber.php @@ -0,0 +1,34 @@ +<?php + +namespace Drupal\rest_api_authentication\Routing; + +use Drupal\Core\Routing\RouteSubscriberBase; +use Symfony\Component\Routing\Route; +use Symfony\Component\Routing\RouteCollection; + +/** + * Listens to the dynamic route events. + */ +class RouteSubscriber extends RouteSubscriberBase { + /** + * {@inheritdoc} + */ + protected function alterRoutes(RouteCollection $collection) { + $route_login = $collection->get('user.login.http'); + $route_login->addOptions([ + '_auth' => [ + 'rest_api_authentication' + ], + ]); + } + + /** + * @param Route $route + * + * @return false|true + */ + private function restLoginRount(Route $route) { + $path = $route->getPath(); + return strpos($path,'/user/login?_format='); + } +} -- GitLab