feat: password reset (#179) (#186)

* feat: password reset via symfonycasts/reset-password-bundle (#179)

Implements the full password reset flow using the SymfonyCasts reset-password-bundle.

* ci: share base layer cache between dev and prod builds

* fix: use CSS form selector in tests instead of translated button text

* fix: translate missing validator string for reset password email field

* fix: translate reset password form labels via TranslatorInterface

* ci: override MAILER_DSN to null for PHPUnit so mailer host is not required
This commit is contained in:
2026-07-07 23:43:24 +02:00
committed by GitHub
parent 47077288d5
commit b915d87d4a
28 changed files with 701 additions and 5 deletions
+54
View File
@@ -0,0 +1,54 @@
<?xml version="1.0" encoding="utf-8"?>
<xliff xmlns="urn:oasis:names:tc:xliff:document:1.2" version="1.2">
<file source-language="nl" target-language="nl" datatype="plaintext" original="file.ext">
<header>
<tool tool-id="symfony" tool-name="Symfony"/>
</header>
<body>
<trans-unit id="E69bPZ6" resname="%count% day|%count% days">
<source>%count% day|%count% days</source>
<target>%count% dag|%count% dagen</target>
</trans-unit>
<trans-unit id="H3jnVKg" resname="%count% hour|%count% hours">
<source>%count% hour|%count% hours</source>
<target>%count% uur|%count% uren</target>
</trans-unit>
<trans-unit id="30tji6_" resname="%count% minute|%count% minutes">
<source>%count% minute|%count% minutes</source>
<target>%count% minuut|%count% minuten</target>
</trans-unit>
<trans-unit id="NCe6niW" resname="%count% month|%count% months">
<source>%count% month|%count% months</source>
<target>%count% maand|%count% maanden</target>
</trans-unit>
<trans-unit id="U_NoHhq" resname="%count% year|%count% years">
<source>%count% year|%count% years</source>
<target>%count% jaar|%count% jaar</target>
</trans-unit>
<trans-unit id="NUQGnNx" resname="Please update the request_password_repository configuration in config/packages/reset_password.yaml to point to your &quot;request password repository&quot; service.">
<source>Please update the request_password_repository configuration in config/packages/reset_password.yaml to point to your "request password repository" service.</source>
<target>Update de request_password_repository waarde in config/packages/reset_password.yaml met een verwijzing naar je "request password repository" service.</target>
</trans-unit>
<trans-unit id="XyawDv9" resname="The link in your email is expired. Please try to reset your password again.">
<source>The link in your email is expired. Please try to reset your password again.</source>
<target>De link in je e-mail is verlopen. Probeer opnieuw je wachtwoord te herstellen.</target>
</trans-unit>
<trans-unit id="RPp.BKQ" resname="The reset password link is invalid. Please try to reset your password again.">
<source>The reset password link is invalid. Please try to reset your password again.</source>
<target>De link om je wachtwoord te herstellen is niet geldig. Probeer opnieuw je wachtwoord te herstellen.</target>
</trans-unit>
<trans-unit id=".BeFwl." resname="There was a problem handling your password reset request">
<source>There was a problem handling your password reset request</source>
<target>Er is een probleem opgetreden bij het afhandelen van het verzoek om je wachtwoord te herstellen</target>
</trans-unit>
<trans-unit id="ZeI3pSX" resname="There was a problem validating your password reset request">
<source>There was a problem validating your password reset request</source>
<target>Er is een probleem opgetreden bij het valideren van het verzoek om je wachtwoord te herstellen</target>
</trans-unit>
<trans-unit id="IZsa0iw" resname="You have already requested a reset password email. Please check your email or try again soon.">
<source>You have already requested a reset password email. Please check your email or try again soon.</source>
<target>Je hebt al een verzoek ingediend voor een e-mail om je wachtwoord te herstellen. Controleer of je een e-mail hebt ontvangen of probeer het later nog eens.</target>
</trans-unit>
</body>
</file>
</xliff>
+52
View File
@@ -109,6 +109,10 @@
<source>Back</source>
<target>Terug</target>
</trans-unit>
<trans-unit id="mR7n673" resname="Back to login">
<source>Back to login</source>
<target>Terug naar inloggen</target>
</trans-unit>
<trans-unit id="JUdglpF" resname="Backoffice">
<source>Backoffice</source>
<target>Backoffice</target>
@@ -145,6 +149,10 @@
<source>Candidates</source>
<target>Kandidaten</target>
</trans-unit>
<trans-unit id="o6WwCao" resname="Check your email">
<source>Check your email</source>
<target>Controleer je e-mail</target>
</trans-unit>
<trans-unit id="J1c2y63" resname="Clear Quiz...">
<source>Clear Quiz...</source>
<target>Test leegmaken...</target>
@@ -249,6 +257,10 @@
<source>Enter name</source>
<target>Voer een naam in</target>
</trans-unit>
<trans-unit id="ifotYH6" resname="Enter your email address, and we will send you a link to reset your password.">
<source>Enter your email address, and we will send you a link to reset your password.</source>
<target>Voer je e-mailadres in en we sturen je een link om je wachtwoord te herstellen.</target>
</trans-unit>
<trans-unit id="RnI7jJT" resname="Enter your name">
<source>Enter your name</source>
<target>Voer je naam in</target>
@@ -273,6 +285,10 @@
<source>Finalized</source>
<target>Afgerond</target>
</trans-unit>
<trans-unit id="Fztxgjr" resname="Forgot your password?">
<source>Forgot your password?</source>
<target>Wachtwoord vergeten?</target>
</trans-unit>
<trans-unit id="MebBrmp" resname="Gray">
<source>Gray</source>
<target>Grijs</target>
@@ -301,6 +317,14 @@
<source>Home</source>
<target>Home</target>
</trans-unit>
<trans-unit id="NJn0f4_" resname="If an account matching your email exists, then an email was just sent that contains a link that you can use to reset your password.">
<source>If an account matching your email exists, then an email was just sent that contains a link that you can use to reset your password.</source>
<target>Als er een account met dit e-mailadres bestaat, is er zojuist een e-mail verstuurd met een link om je wachtwoord te herstellen.</target>
</trans-unit>
<trans-unit id="bDPZm0a" resname="If you don't receive an email please check your spam folder or">
<source>If you don't receive an email please check your spam folder or</source>
<target>Als je geen e-mail ontvangt, controleer dan je spammap of</target>
</trans-unit>
<trans-unit id="oPzjCWg" resname="Import">
<source>Import</source>
<target>Importeren</target>
@@ -373,6 +397,10 @@
<source>New label</source>
<target>Nieuw label</target>
</trans-unit>
<trans-unit id="Zm.jZiK" resname="New password">
<source>New password</source>
<target>Nieuw wachtwoord</target>
</trans-unit>
<trans-unit id="gefhnBC" resname="Next">
<source>Next</source>
<target>Volgende</target>
@@ -593,6 +621,14 @@
<source>Repeat Password</source>
<target>Herhaal wachtwoord</target>
</trans-unit>
<trans-unit id="9JCvQkt" resname="Reset password">
<source>Reset password</source>
<target>Wachtwoord herstellen</target>
</trans-unit>
<trans-unit id="eyayNGN" resname="Reset your password">
<source>Reset your password</source>
<target>Wachtwoord herstellen</target>
</trans-unit>
<trans-unit id="7UvBPrb" resname="Results &amp; Elimination">
<source>Results &amp; Elimination</source>
<target><![CDATA[Resultaat & Eliminatie]]></target>
@@ -629,6 +665,10 @@
<source>Seasons</source>
<target>Seizoenen</target>
</trans-unit>
<trans-unit id="5XiCCZa" resname="Send password reset email">
<source>Send password reset email</source>
<target>Stuur herstel-e-mail</target>
</trans-unit>
<trans-unit id="VXFwlwn" resname="Settings">
<source>Settings</source>
<target>Instellingen</target>
@@ -689,6 +729,10 @@
<source>There is no active quiz</source>
<target>Er is geen test actief</target>
</trans-unit>
<trans-unit id="YueaA2f" resname="This link will expire in %count%.">
<source>This link will expire in %count%.</source>
<target>Deze link verloopt over %count%.</target>
</trans-unit>
<trans-unit id="o.FTilS" resname="This question cannot be deleted because it is used in a locked or active quiz">
<source>This question cannot be deleted because it is used in a locked or active quiz</source>
<target>Deze vraag kan niet verwijderd worden omdat die gebruik wordt in een vergrendelde of actieve test</target>
@@ -773,6 +817,14 @@
<source>Your email address has been verified.</source>
<target>Je e-mailadres is geverifieerd.</target>
</trans-unit>
<trans-unit id="YDIkAA1" resname="Your password reset request">
<source>Your password reset request</source>
<target>Verzoek tot wachtwoordherstel</target>
</trans-unit>
<trans-unit id="zqHSO6v" resname="try again">
<source>try again</source>
<target>probeer opnieuw</target>
</trans-unit>
</body>
</file>
</xliff>
+4
View File
@@ -113,6 +113,10 @@
<source>Please enter an integer.</source>
<target>Vul een geldig getal in.</target>
</trans-unit>
<trans-unit id="7VWHcE0" resname="Please enter your email">
<source>Please enter your email</source>
<target>Voer je e-mailadres in</target>
</trans-unit>
<trans-unit id="9RtYCIm" resname="Please provide a valid phone number.">
<source>Please provide a valid phone number.</source>
<target>Vul een geldig telefoonnummer in.</target>