From 03ca19f59498a886154639e8f8f2ac7346794a36 Mon Sep 17 00:00:00 2001 From: Sebastian Helzle Date: Wed, 4 Dec 2019 09:37:49 +0100 Subject: [PATCH 1/2] !!! FEATURE: Refactor login form to Fusion --- .../Controller/AuthenticationController.php | 33 ++++++++- Resources/Private/Fusion/Backend/Root.fusion | 71 +++++++++++++++++++ .../Private/Fusion/NodeTypes/LoginForm.fusion | 24 ++++--- .../Templates/Authentication/Index.html | 39 ---------- composer.json | 6 +- 5 files changed, 120 insertions(+), 53 deletions(-) create mode 100644 Resources/Private/Fusion/Backend/Root.fusion delete mode 100644 Resources/Private/Templates/Authentication/Index.html diff --git a/Classes/Controller/AuthenticationController.php b/Classes/Controller/AuthenticationController.php index 45fb305..3ebb61c 100644 --- a/Classes/Controller/AuthenticationController.php +++ b/Classes/Controller/AuthenticationController.php @@ -18,14 +18,23 @@ use Neos\Flow\I18n\Translator; use Neos\Flow\Mvc\ActionRequest; use Neos\Flow\Mvc\Exception\UnsupportedRequestTypeException; +use Neos\Flow\Mvc\FlashMessage\FlashMessageService; +use Neos\Flow\Mvc\View\ViewInterface; use Neos\Flow\Security\Authentication\Controller\AbstractAuthenticationController; use Neos\Flow\Security\Exception\AuthenticationRequiredException; +use Neos\Fusion\View\FusionView; /** * Controller for displaying a login/logout form and authenticating/logging out "frontend users" */ class AuthenticationController extends AbstractAuthenticationController { + + /** + * @var FusionView + */ + protected $defaultViewObjectName = FusionView::class; + /** * @var Translator * @Flow\Inject @@ -44,12 +53,21 @@ class AuthenticationController extends AbstractAuthenticationController */ protected $translationSourceName; + /** + * @Flow\Inject + * @var FlashMessageService + */ + protected $flashMessageService; + /** * @return void */ public function indexAction(): void { - $this->view->assign('account', $this->securityContext->getAccount()); + $this->view->assignMultiple([ + 'account' => $this->securityContext->getAccount(), + 'flashMessages' => $this->flashMessageService->getFlashMessageContainerForRequest($this->request)->getMessagesAndFlush(), + ]); } /** @@ -117,4 +135,17 @@ protected function getErrorFlashMessage() { return false; } + + /** + * Sets the Fusion path pattern on the view. + * + * @param ViewInterface $view + * @return void + */ + protected function initializeView(ViewInterface $view) + { + parent::initializeView($view); + /** @var FusionView $view */ + $view->setFusionPathPattern('resource://Flowpack.Neos.FrontendLogin/Private/Fusion/Backend'); + } } diff --git a/Resources/Private/Fusion/Backend/Root.fusion b/Resources/Private/Fusion/Backend/Root.fusion new file mode 100644 index 0000000..0bc17ce --- /dev/null +++ b/Resources/Private/Fusion/Backend/Root.fusion @@ -0,0 +1,71 @@ +include: resource://Neos.Fusion/Private/Fusion/Root.fusion +include: resource://Neos.Fusion.Form/Private/Fusion/Root.fusion + +Flowpack.Neos.FrontendLogin.AuthenticationController.index = Neos.Fusion:Component { + account = ${account} + flashMessages = ${flashMessages} + + settings = ${Configuration.setting('Flowpack.Neos.FrontendLogin')} + + renderer = afx` +
+
+

+ {I18n.id('authentication.backendmessage').package(props.settings.translation.packageKey).source(props.settings.translation.sourceName).translate()} +

+
+

+ {I18n.id('authentication.form.loggedIn').value('You are logged in as').package(props.settings.translation.packageKey).source(props.settings.translation.sourceName).translate()}  + "{props.account.accountIdentifier}" +

+ + + {I18n.id('authentication.form.logout').value('Logout').package(props.settings.translation.packageKey).source(props.settings.translation.sourceName).translate()} + + +
+
+
    + +
  • {flashMessage.message}
  • +
    +
+ + +
+ +
+ +
+
+
+ +
+ +
+
+
+
+ + {I18n.id('authentication.form.submit').package(props.settings.translation.packageKey).source(props.settings.translation.sourceName).translate()} + +
+
+
+
+
+
+ ` +} diff --git a/Resources/Private/Fusion/NodeTypes/LoginForm.fusion b/Resources/Private/Fusion/NodeTypes/LoginForm.fusion index 8932f06..1602cc6 100644 --- a/Resources/Private/Fusion/NodeTypes/LoginForm.fusion +++ b/Resources/Private/Fusion/NodeTypes/LoginForm.fusion @@ -1,16 +1,18 @@ ## # "LoginForm" element, extending "Plugin" # -prototype(Flowpack.Neos.FrontendLogin:LoginForm) < prototype(Neos.Neos:Plugin) { - package = 'Flowpack.Neos.FrontendLogin' - controller = 'Authentication' - action = 'index' +prototype(Flowpack.Neos.FrontendLogin:LoginForm) < prototype(Neos.Neos:ContentComponent) { + renderer = Neos.Neos:Plugin { + package = 'Flowpack.Neos.FrontendLogin' + controller = 'Authentication' + action = 'index' - redirectAfterLoginUri = Neos.Neos:NodeUri { - node = ${q(node).property('redirectAfterLogin')} - } + redirectAfterLoginUri = Neos.Neos:NodeUri { + node = ${q(node).property('redirectAfterLogin')} + } - redirectAfterLogoutUri = Neos.Neos:NodeUri { - node = ${q(node).property('redirectAfterLogout')} - } -} \ No newline at end of file + redirectAfterLogoutUri = Neos.Neos:NodeUri { + node = ${q(node).property('redirectAfterLogout')} + } + } +} diff --git a/Resources/Private/Templates/Authentication/Index.html b/Resources/Private/Templates/Authentication/Index.html deleted file mode 100644 index 76c373d..0000000 --- a/Resources/Private/Templates/Authentication/Index.html +++ /dev/null @@ -1,39 +0,0 @@ -{namespace neos=Neos\Neos\ViewHelpers} -
-
- - -

-
- - - -

You're logged in as "{account.accountIdentifier}"

- - - -
- - - - -
- - -
-
- - -
-
-
- -
-
-
-
-
-
-
-
-
diff --git a/composer.json b/composer.json index 7d7b2d4..3703a93 100644 --- a/composer.json +++ b/composer.json @@ -4,7 +4,9 @@ "description": "Neos plugin demonstrating a simple frontend login", "license": "MIT", "require": { - "neos/neos": "^5.0 || dev-master" + "neos/neos": "^5.0 || dev-master", + "neos/fusion-form": "^1.0 || dev-master" + "neos/fusion-afx": "^1.4 || dev-master" }, "autoload": { "psr-4": { @@ -13,7 +15,7 @@ }, "extra": { "branch-alias": { - "dev-master": "4.0.x-dev" + "dev-master": "5.0.x-dev" }, "applied-flow-migrations": [ "TYPO3.FLOW3-201201261636", From 0d53ebc2840f7473f0d32059237e5fb52ea295f5 Mon Sep 17 00:00:00 2001 From: Martin Ficzel Date: Thu, 5 Dec 2019 17:50:05 +0100 Subject: [PATCH 2/2] BUGFIX: Fix composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 3703a93..7f04455 100644 --- a/composer.json +++ b/composer.json @@ -5,7 +5,7 @@ "license": "MIT", "require": { "neos/neos": "^5.0 || dev-master", - "neos/fusion-form": "^1.0 || dev-master" + "neos/fusion-form": "^1.0 || dev-master", "neos/fusion-afx": "^1.4 || dev-master" }, "autoload": {