From 684d0deaaa119298056e445b7e1bb946a190752a Mon Sep 17 00:00:00 2001 From: olli Date: Mon, 10 Nov 2025 10:36:02 +0100 Subject: [PATCH] feat: Implement permission management with dynamic access control for contacts --- assets/app.js | 6 + assets/js/components/CrudDataTable.vue | 25 ++- assets/js/stores/permissions.js | 68 ++++++ assets/js/views/ContactManagement.vue | 207 +++++++++++++++++- src/Controller/PermissionController.php | 45 ++++ src/Entity/Contact.php | 37 +++- src/Entity/Interface/ModuleAwareInterface.php | 14 ++ src/Security/LoginFormAuthenticator.php | 2 +- src/Security/Voter/ModuleVoter.php | 30 ++- 9 files changed, 413 insertions(+), 21 deletions(-) create mode 100644 assets/js/stores/permissions.js create mode 100644 src/Controller/PermissionController.php create mode 100644 src/Entity/Interface/ModuleAwareInterface.php diff --git a/assets/app.js b/assets/app.js index 094c377..5073754 100644 --- a/assets/app.js +++ b/assets/app.js @@ -187,3 +187,9 @@ if (savedPrimary || savedSurface) { const authStore = useAuthStore(); authStore.initializeFromElement(); +// Load user permissions +import { usePermissionStore } from './js/stores/permissions'; +const permissionStore = usePermissionStore(); +if (authStore.isAuthenticated) { + permissionStore.loadPermissions(); +} diff --git a/assets/js/components/CrudDataTable.vue b/assets/js/components/CrudDataTable.vue index e1227f6..bc4b4da 100644 --- a/assets/js/components/CrudDataTable.vue +++ b/assets/js/components/CrudDataTable.vue @@ -88,6 +88,16 @@