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