From 3e30d958b3e68ac891ddf81ef2273503f60e132f Mon Sep 17 00:00:00 2001 From: olli Date: Tue, 11 Nov 2025 14:31:40 +0100 Subject: [PATCH] feat: Implement password reset functionality - Added PasswordResetController to handle password reset requests and confirmations. - Created views for password reset request, confirmation, and invalid link scenarios. - Implemented email sending for password reset requests with security measures. - Added form validation for password reset confirmation, including password strength requirements. - Enhanced user experience with success and error messages during the password reset process. --- assets/js/components/ColumnConfigDialog.vue | 26 +- assets/js/components/CrudDataTable.vue | 163 ++++- config/packages/security.yaml | 2 + src/Controller/PasswordResetController.php | 109 ++++ src/Service/PasswordSetupService.php | 49 +- templates/security/login.html.twig | 608 ++++++++++++------ .../security/password_reset_confirm.html.twig | 309 +++++++++ .../security/password_reset_invalid.html.twig | 174 +++++ .../security/password_reset_request.html.twig | 256 ++++++++ 9 files changed, 1483 insertions(+), 213 deletions(-) create mode 100644 src/Controller/PasswordResetController.php create mode 100644 templates/security/password_reset_confirm.html.twig create mode 100644 templates/security/password_reset_invalid.html.twig create mode 100644 templates/security/password_reset_request.html.twig diff --git a/assets/js/components/ColumnConfigDialog.vue b/assets/js/components/ColumnConfigDialog.vue index a892c5a..d9e8113 100644 --- a/assets/js/components/ColumnConfigDialog.vue +++ b/assets/js/components/ColumnConfigDialog.vue @@ -9,6 +9,19 @@

Wählen Sie die anzuzeigenden Spalten aus und ziehen Sie sie, um die Reihenfolge zu ändern:

+ +
+ + + +
+
props.columns, (newVal) => { @@ -73,6 +91,10 @@ watch(() => props.visibleColumns, (newVal) => { localVisibility.value = { ...newVal } }, { deep: true }) +watch(() => props.freezeFirstColumn, (newVal) => { + localFreezeFirst.value = newVal +}) + // Drag and drop for column reordering let draggedIndex = null @@ -96,6 +118,7 @@ const onDrop = (dropIndex) => { const save = () => { emit('update:columns', localColumns.value) emit('update:visibleColumns', localVisibility.value) + emit('update:freezeFirstColumn', localFreezeFirst.value) emit('save') } @@ -103,6 +126,7 @@ const cancel = () => { // Reset local changes localColumns.value = [...props.columns] localVisibility.value = { ...props.visibleColumns } + localFreezeFirst.value = props.freezeFirstColumn emit('update:visible', false) } diff --git a/assets/js/components/CrudDataTable.vue b/assets/js/components/CrudDataTable.vue index cf3dbf1..52cbf3f 100644 --- a/assets/js/components/CrudDataTable.vue +++ b/assets/js/components/CrudDataTable.vue @@ -35,6 +35,27 @@ + +
+
+ + + {{ filterCount }} {{ filterCount === 1 ? 'Filter aktiv' : 'Filter aktiv' }} + + - {{ filteredData.length }} von {{ data.length }} {{ data.length === 1 ? 'Datensatz' : 'Datensätze' }} angezeigt + + +
+
+ -