From cd3eb6afed35f5724c0af5d48b158e135a37e396 Mon Sep 17 00:00:00 2001 From: olli Date: Sat, 8 Nov 2025 18:45:43 +0100 Subject: [PATCH] feat: Implement password setup functionality with email notifications and token management --- .env | 3 +- assets/js/views/UserManagement.vue | 21 +- config/packages/messenger.yaml | 4 +- config/services.yaml | 12 ++ migrations/Version20251108170818.php | 31 +++ src/Controller/PasswordSetupController.php | 69 ++++++ src/Entity/User.php | 37 +++- src/EventListener/MailerLoggerListener.php | 183 ++++++++++++++++ src/Service/PasswordSetupService.php | 203 ++++++++++++++++++ src/State/UserPasswordHasher.php | 29 ++- templates/security/login.html.twig | 7 + templates/security/password_setup.html.twig | 176 +++++++++++++++ .../security/password_setup_invalid.html.twig | 70 ++++++ 13 files changed, 834 insertions(+), 11 deletions(-) create mode 100644 migrations/Version20251108170818.php create mode 100644 src/Controller/PasswordSetupController.php create mode 100644 src/EventListener/MailerLoggerListener.php create mode 100644 src/Service/PasswordSetupService.php create mode 100644 templates/security/password_setup.html.twig create mode 100644 templates/security/password_setup_invalid.html.twig diff --git a/.env b/.env index e814143..7ef80b0 100644 --- a/.env +++ b/.env @@ -17,6 +17,7 @@ ###> symfony/framework-bundle ### APP_ENV=dev APP_SECRET=83df005f029c92c8e01026218f588371 +APP_URL=http://localhost:8000 ###< symfony/framework-bundle ### ###> symfony/routing ### @@ -43,7 +44,7 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0 ###< symfony/messenger ### ###> symfony/mailer ### -MAILER_DSN=null://null +MAILER_DSN=smtp://o.schwarten@osdata.org:pOlygon089@linus.osdata.org:587 ###< symfony/mailer ### ###> nelmio/cors-bundle ### diff --git a/assets/js/views/UserManagement.vue b/assets/js/views/UserManagement.vue index 2f89aa3..2472aa6 100644 --- a/assets/js/views/UserManagement.vue +++ b/assets/js/views/UserManagement.vue @@ -120,7 +120,9 @@
- + + + + {{ errors.plainPassword }}
{% endif %} + {% if app.request.query.get('password_set') %} +
+ ✓ Passwort erfolgreich eingerichtet!
+ Sie können sich jetzt mit Ihrer E-Mail-Adresse und dem neu gesetzten Passwort anmelden. +
+ {% endif %} + {% if app.user %}
Sie sind bereits angemeldet als {{ app.user.userIdentifier }}. diff --git a/templates/security/password_setup.html.twig b/templates/security/password_setup.html.twig new file mode 100644 index 0000000..f92d159 --- /dev/null +++ b/templates/security/password_setup.html.twig @@ -0,0 +1,176 @@ + + + + + + Passwort einrichten - myCRM + {{ encore_entry_link_tags('app') }} + + + +
+
+

📊 myCRM

+

Passwort einrichten

+
+ + + + {% if error %} +
+ {{ error }} +
+ {% endif %} + +
+ Bitte wählen Sie ein sicheres Passwort für Ihren Account. +
+ +
+
+ + +
+ Mindestens {{ min_length }} Zeichen erforderlich +
+
+ +
+ + +
+ + +
+
+ + diff --git a/templates/security/password_setup_invalid.html.twig b/templates/security/password_setup_invalid.html.twig new file mode 100644 index 0000000..33bf4fc --- /dev/null +++ b/templates/security/password_setup_invalid.html.twig @@ -0,0 +1,70 @@ + + + + + + Ungültiger Link - myCRM + {{ encore_entry_link_tags('app') }} + + + +
+
⚠️
+

Link ungültig oder abgelaufen

+

+ Der Link zum Einrichten Ihres Passworts ist ungültig oder bereits abgelaufen. + Links sind 24 Stunden lang gültig. +

+

+ Bitte wenden Sie sich an Ihren Administrator, um einen neuen Link anzufordern. +

+ +
+ +