Passwort vergessen¶
Seit 27.09.2023 wird die Passwort vergessen Funktion über einen Workflow abgebildet.
Der Workflow wird über die Standard Presenter \Alvine\Application\Platform\Presenter\Api\Logic\Workflow\FactoryAndRun
gestartet.
Um per URL einen bestimmten Workflow laufen zu lassen werden die Daten direkt in der Route definiert.
Ein Container mit einer UUID wirn erstellt und der Übergang der möglich ist wird direkt ausgeführt.
Das Senden der Mail sollte ein Workflow übernehmen der ausschließlich Mails sendet.
[!Wichtig] Bei offenen Routen ohne Credentiols müssen workflow,factory,count und transition in der Route definiert werden damit ein Benutzer das nicht manipulieren kann
Route:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<definition>
<routes>
<group>
<route id="PLUGIN_COMMERCE_API_ACCOUNT_REQUEST-ACCESS-TOKEN">
<method>POST</method>
<presenter>\Alvine\Application\Platform\Presenter\Api\Logic\Workflow\FactoryAndRun</presenter>
<pattern><![CDATA[^/api/plugin/commerce/request-access-token$]]></pattern>
<template>/api/plugin/commerce/request-access-token</template>
<configuration>
<workflow>alvine.application.platform.plugin.commerce/mail-temporarytoken</workflow>
<factory>\Alvine\Application\Workflow\Factory</factory>
<count>1</count>
<transition>start</transition>
</configuration>
</route>
</group>
</routes>
</definition>
Ablauf¶
Die API /api/plugin/commerce/request-access-token
wird per POST mit den Body
{
"username" : "[email protected]"
}
aufgerufen.
Der Workflow wird ausgeführt.
- Es wird geprüft ob es eine Identity gibt \Alvine\Application\Platform\Logic\Workflow\Transition\Validation\Security\IdentityFromRequest
- Im Prepare Step werden die Daten geladen und CreateNonce + CreateLoginURL werden erstellt
- Die Documente werden erstellt
- Die Factory wird erstellt für die Mail
- der create-container Step führt die AddNonceToSession Action aus und erstellt den Container zum versenden der Mail
CreateLoginURL¶
Diese Action definiert wo bei welcher URL sich der Benutzer anmelden kann nachdem der Nonce in der neuen Session definiert wurde.
Der Standard wird in der assembly.properties
definiert.
## LOGIN
# URL for sending a login token.
# See ROUTE LOGIN-WITH-ACCESS-TOKEN
application.platform.console.login.optainpermail.url=https://{ENV:SERVER_NAME}/api/login-with-access-token?token=\{token\}
Wenn die sich der Benutzer an einer anderen URL anmelden soll muss diese Action ausgetauscht/angepasst werden
login-with-access-token¶
Diese Route loggt den Benutzer ein.
Der Presenter Alvine\Application\Platform\Presenter\Security\TemporaryToken\Login
übernimmt den Request.
Anmeldung mit dem vom User übergebenen Token. Passt der Token zu dem in der Session so wir der User angemeldet.
In der Route kann die Zielroute füd den Erfolgs- und den Fehlerfall angegeben werden.
Angebenen werden die IDs
ALVINE-ADMIN-GET > /admin/
LOGIN > /admin/login
<configuration>
<valid>ALVINE-ADMIN-GET</valid>
<error>LOGIN</error>
</configuration>
Frontend¶
Hier muss es eine Route geben die auch den Presenter verwendet aber eine andere Configuration hat. Damit der Benutzer im bei Fehler auf die