From 3a06047dc1dedbafb10d95812a6c036047e845ed Mon Sep 17 00:00:00 2001 From: Ralf Zimmermann Date: Sat, 4 Mar 2023 23:29:08 +0100 Subject: [PATCH 1/2] [FEATURE] Overwritable login provider templates #12 --- .../LoginProvider/Oauth2LoginProvider.php | 32 +++++++++++++++++-- Documentation/Configuration/Index.rst | 29 +++++++++++++++++ 2 files changed, 58 insertions(+), 3 deletions(-) diff --git a/Classes/Backend/LoginProvider/Oauth2LoginProvider.php b/Classes/Backend/LoginProvider/Oauth2LoginProvider.php index d4528fe..86225d3 100644 --- a/Classes/Backend/LoginProvider/Oauth2LoginProvider.php +++ b/Classes/Backend/LoginProvider/Oauth2LoginProvider.php @@ -20,6 +20,7 @@ use TYPO3\CMS\Backend\Controller\LoginController; use TYPO3\CMS\Backend\LoginProvider\LoginProviderInterface; +use TYPO3\CMS\Core\Configuration\ExtensionConfiguration; use TYPO3\CMS\Core\Page\PageRenderer; use TYPO3\CMS\Fluid\View\StandaloneView; use Waldhacker\Oauth2Client\Service\Oauth2ProviderManager; @@ -29,15 +30,40 @@ class Oauth2LoginProvider implements LoginProviderInterface public const PROVIDER_ID = '1616569531'; private Oauth2ProviderManager $oauth2ProviderManager; + private ExtensionConfiguration $extensionConfiguration; - public function __construct(Oauth2ProviderManager $oauth2ProviderManager) - { + public function __construct( + Oauth2ProviderManager $oauth2ProviderManager, + ExtensionConfiguration $extensionConfiguration + ) { $this->oauth2ProviderManager = $oauth2ProviderManager; + $this->extensionConfiguration = $extensionConfiguration; } public function render(StandaloneView $view, PageRenderer $pageRenderer, LoginController $loginController) { - $view->setTemplatePathAndFilename('EXT:oauth2_client/Resources/Private/Templates/Backend/Oauth2LoginProvider.html'); + $extensionConfiguration = $this->extensionConfiguration->get('oauth2_client'); + + $view->setLayoutRootPaths(array_merge( + $view->getLayoutRootPaths(), + ['EXT:oauth2_client/Resources/Private/Layouts/Backend/'], + $extensionConfiguration['view']['layoutRootPaths'] ?? [] + )); + + $view->setTemplateRootPaths(array_merge( + $view->getTemplateRootPaths(), + ['EXT:oauth2_client/Resources/Private/Templates/Backend/'], + $extensionConfiguration['view']['templateRootPaths'] ?? [] + )); + + $view->setPartialRootPaths(array_merge( + $view->getPartialRootPaths(), + ['EXT:oauth2_client/Resources/Private/Partials/Backend/'], + $extensionConfiguration['view']['partialRootPaths'] ?? [] + )); + + $view->setTemplate($extensionConfiguration['view']['template'] ?? 'Oauth2LoginProvider'); + $view->assign('providers', $this->oauth2ProviderManager->getConfiguredBackendProviders()); } } diff --git a/Documentation/Configuration/Index.rst b/Documentation/Configuration/Index.rst index 24c632f..487b800 100644 --- a/Documentation/Configuration/Index.rst +++ b/Documentation/Configuration/Index.rst @@ -365,3 +365,32 @@ Specific Providers (Examples) Google Keycloak Hydra + +Login provider templates +------------------------ + +If you need to customize the login template :file:`Resources/Private/Templates/Backend/Oauth2LoginProvider.html` you can override it by adding your own fluid template search paths. + +Example: + +.. code-block:: php + + $GLOBALS['TYPO3_CONF_VARS']['EXTENSIONS']['oauth2_client'] = [ + 'view' => [ + // add some additional layout search paths: + 'layoutRootPaths' => [ + 'EXT:site_package/Resources/Private/Layouts/Backend/', + ], + // add some additional template search paths: + 'templateRootPaths' => [ + 'EXT:site_package/Resources/Private/Templates/Backend/', + ], + // add some additional partial search paths: + 'partialRootPaths' => [ + 'EXT:site_package/Resources/Private/Partials/Backend/', + ], + // you can override the template name too: + 'template' => 'Oauth2LoginProvider', + ], + ]; + From c7a4548d7247cc5d48969b567be19e5ec5c46c29 Mon Sep 17 00:00:00 2001 From: Ralf Zimmermann Date: Sat, 4 Mar 2023 23:34:14 +0100 Subject: [PATCH 2/2] [TASK] Update 2.1.0 --- CHANGELOG.md | 17 +++++++++++++++++ Documentation/Changelog.rst | 16 ++++++++++++++++ Documentation/Settings.cfg | 2 +- build/release/ext_emconf.php | 2 +- ext_emconf.php | 2 +- 5 files changed, 36 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 986d7b4..7197897 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,19 @@ # Changelog +## 2.1.0 (2023-03-04) + +### Features + +* Overwritable login provider templates #12. [Ralf Zimmermann] + +### Other + +* Merge tag '2.0.2' into develop. [Ralf Zimmermann] + + 2.0.2 + + ## 2.0.2 (2023-03-04) ### Bugfixes @@ -16,12 +29,16 @@ ### Tasks +* Update changelog. [Ralf Zimmermann] + * Version 2.0.2. [Ralf Zimmermann] * Fix license. [Ralf Zimmermann] ### Other +* Merge branch 'release/2.0.2' into main. [Ralf Zimmermann] + * Merge tag '2.0.1' into develop. [Ralf Zimmermann] 2.0.1 diff --git a/Documentation/Changelog.rst b/Documentation/Changelog.rst index 1ac5437..ea84c6e 100644 --- a/Documentation/Changelog.rst +++ b/Documentation/Changelog.rst @@ -2,11 +2,26 @@ Changelog ========= +2.1.0 (2023-03-04) +------------------ + +Features +~~~~~~~~ +- Overwritable login provider templates #12. [Ralf Zimmermann] + +Other +~~~~~ +- Merge tag '2.0.2' into develop. [Ralf Zimmermann] + + 2.0.2 + + 2.0.2 (2023-03-04) ------------------ Tasks ~~~~~ +- Update changelog. [Ralf Zimmermann] - Version 2.0.2. [Ralf Zimmermann] - Fix license. [Ralf Zimmermann] @@ -24,6 +39,7 @@ Bugfixes Other ~~~~~ +- Merge branch 'release/2.0.2' into main. [Ralf Zimmermann] - Merge tag '2.0.1' into develop. [Ralf Zimmermann] 2.0.1 diff --git a/Documentation/Settings.cfg b/Documentation/Settings.cfg index 0bfe580..80a9e15 100644 --- a/Documentation/Settings.cfg +++ b/Documentation/Settings.cfg @@ -25,7 +25,7 @@ project = TYPO3 OAuth2 Login Client (backend and frontend) # ... (recommended) version, displayed next to title (desktop) and in 'stable', 'uploadfolder' => '0', 'clearCacheOnLoad' => 1, - 'version' => '2.0.2', + 'version' => '2.1.0', 'constraints' => [ 'depends' => [ 'backend' => '10.4.0-11.5.99', diff --git a/ext_emconf.php b/ext_emconf.php index 669c7ce..14bcb52 100644 --- a/ext_emconf.php +++ b/ext_emconf.php @@ -10,7 +10,7 @@ 'state' => 'stable', 'uploadfolder' => '0', 'clearCacheOnLoad' => 1, - 'version' => '2.0.2', + 'version' => '2.1.0', 'constraints' => [ 'depends' => [ 'backend' => '10.4.0-11.5.99',