From 311f523647676726548c92a4b17751d5009597be Mon Sep 17 00:00:00 2001 From: kevin Date: Fri, 6 Feb 2026 15:36:27 +0100 Subject: [PATCH 1/4] feat : Ajout d'une liste des utilisateur --- .idea/data_source_mapping.xml | 10 +++++ frontend/layouts/admin.vue | 12 +++++- frontend/pages/admin/dashboard.vue | 16 ++++---- frontend/pages/admin/user-list.vue | 64 ++++++++++++++++++++++++++++++ frontend/services/dto/user-data.ts | 1 + src/Entity/User.php | 1 + 6 files changed, 95 insertions(+), 9 deletions(-) create mode 100644 .idea/data_source_mapping.xml create mode 100644 frontend/pages/admin/user-list.vue diff --git a/.idea/data_source_mapping.xml b/.idea/data_source_mapping.xml new file mode 100644 index 0000000..531f7a7 --- /dev/null +++ b/.idea/data_source_mapping.xml @@ -0,0 +1,10 @@ + + + + + + + + + + \ No newline at end of file diff --git a/frontend/layouts/admin.vue b/frontend/layouts/admin.vue index ffb8938..a840e82 100644 --- a/frontend/layouts/admin.vue +++ b/frontend/layouts/admin.vue @@ -26,10 +26,17 @@
- + + + Utilisateurs +
+

v{{ version }}

+
@@ -50,7 +58,9 @@ - - - - diff --git a/frontend/pages/admin/user-list.vue b/frontend/pages/admin/user-list.vue new file mode 100644 index 0000000..e0f0d6d --- /dev/null +++ b/frontend/pages/admin/user-list.vue @@ -0,0 +1,64 @@ + + + + + + diff --git a/frontend/services/dto/user-data.ts b/frontend/services/dto/user-data.ts index f3e33b5..4db819e 100644 --- a/frontend/services/dto/user-data.ts +++ b/frontend/services/dto/user-data.ts @@ -1,4 +1,5 @@ export interface UserData { id: number username: string + roles?: string[] } diff --git a/src/Entity/User.php b/src/Entity/User.php index aad9b14..7acee63 100644 --- a/src/Entity/User.php +++ b/src/Entity/User.php @@ -49,6 +49,7 @@ class User implements UserInterface, PasswordAuthenticatedUserInterface private string $username = ''; #[ORM\Column(type: 'json')] + #[Groups(['user:read'])] private array $roles = []; #[ORM\Column] -- 2.39.5 From ca1910b1d1c4b0da6fc2a649ac2143cd7d3602ed Mon Sep 17 00:00:00 2001 From: kevin Date: Mon, 9 Feb 2026 13:59:14 +0100 Subject: [PATCH 2/4] feat : creation d'une page d'aministration pour la ajout / modification d'utlisateur --- frontend/components/user/user-form.vue | 125 ++++++++++++++++++ frontend/i18n/locales/fr.json | 6 +- frontend/layouts/admin.vue | 5 +- frontend/layouts/default.vue | 25 ++-- frontend/pages/admin/dashboard.vue | 6 +- frontend/pages/admin/user/[[id]].vue | 8 ++ .../admin/{user-list.vue => user/list.vue} | 35 ++--- frontend/services/auth.ts | 23 ++++ frontend/services/dto/user-data.ts | 6 + frontend/stores/auth.ts | 125 ++++++++++-------- frontend/utils/constants.ts | 4 + src/Entity/User.php | 29 +++- src/State/UserPasswordProcessor.php | 40 ++++++ 13 files changed, 339 insertions(+), 98 deletions(-) create mode 100644 frontend/components/user/user-form.vue create mode 100644 frontend/pages/admin/user/[[id]].vue rename frontend/pages/admin/{user-list.vue => user/list.vue} (56%) create mode 100644 src/State/UserPasswordProcessor.php diff --git a/frontend/components/user/user-form.vue b/frontend/components/user/user-form.vue new file mode 100644 index 0000000..3e9fac6 --- /dev/null +++ b/frontend/components/user/user-form.vue @@ -0,0 +1,125 @@ + + + diff --git a/frontend/i18n/locales/fr.json b/frontend/i18n/locales/fr.json index cc66034..d00870e 100644 --- a/frontend/i18n/locales/fr.json +++ b/frontend/i18n/locales/fr.json @@ -57,7 +57,9 @@ "auth": { "login": "Identifiants invalides.", "users": "Impossible de récupérer les utilisateurs.", - "logout": "Impossible de se déconnecter." + "logout": "Impossible de se déconnecter.", + "update": "Impossible de mettre à jour l'utilisateur.", + "create": "Impossible de créer l'utilisateur." } }, "success": { @@ -65,6 +67,8 @@ "update": "Réception mise à jour avec succès." }, "auth": { + "update": "Utilisateur mis à jour avec succès.", + "create": "Utilisateur créé avec succès.", "login": "Connexion réussie.", "logout": "Déconnexion réussie." } diff --git a/frontend/layouts/admin.vue b/frontend/layouts/admin.vue index a840e82..fef789c 100644 --- a/frontend/layouts/admin.vue +++ b/frontend/layouts/admin.vue @@ -28,7 +28,7 @@ Utilisateurs @@ -58,8 +58,9 @@ diff --git a/frontend/pages/admin/dashboard.vue b/frontend/pages/admin/dashboard.vue index d61fc7d..788fdd1 100644 --- a/frontend/pages/admin/dashboard.vue +++ b/frontend/pages/admin/dashboard.vue @@ -1,13 +1,9 @@ diff --git a/frontend/pages/admin/user/[[id]].vue b/frontend/pages/admin/user/[[id]].vue new file mode 100644 index 0000000..e048f43 --- /dev/null +++ b/frontend/pages/admin/user/[[id]].vue @@ -0,0 +1,8 @@ + + diff --git a/frontend/pages/admin/user-list.vue b/frontend/pages/admin/user/list.vue similarity index 56% rename from frontend/pages/admin/user-list.vue rename to frontend/pages/admin/user/list.vue index e0f0d6d..0222982 100644 --- a/frontend/pages/admin/user-list.vue +++ b/frontend/pages/admin/user/list.vue @@ -1,12 +1,13 @@ - - diff --git a/frontend/services/auth.ts b/frontend/services/auth.ts index 7703ac4..d244d50 100644 --- a/frontend/services/auth.ts +++ b/frontend/services/auth.ts @@ -13,6 +13,17 @@ export async function getUsers() { return data['hydra:member'] ?? [] } +export async function getAdminUsers() { + const api = useApi() + const data = await api.get('admin/users', {}, { + toastErrorKey: 'errors.auth.users' + }) + if (Array.isArray(data)) { + return data + } + + return data['hydra:member'] ?? [] +} export async function getUser(id: number) { const api = useApi() diff --git a/frontend/services/dto/user-data.ts b/frontend/services/dto/user-data.ts index ae62f22..3fb9206 100644 --- a/frontend/services/dto/user-data.ts +++ b/frontend/services/dto/user-data.ts @@ -9,3 +9,9 @@ export type UserPayload = { password?: string roles?: string[] } + +export type UserFormData = { + username: string + password: string + role: string +} diff --git a/frontend/stores/auth.ts b/frontend/stores/auth.ts index d5d9f00..4bd5e33 100644 --- a/frontend/stores/auth.ts +++ b/frontend/stores/auth.ts @@ -12,7 +12,7 @@ export const useAuthStore = defineStore('auth', { }), getters: { isAuthenticated: (state) => Boolean(state.user), - isAdmin: (state) => Boolean(state.user?.roles?.includes(ROLE.ROLE_ADMIN)) + isAdmin: (state) => Boolean(state.user?.roles?.includes(ROLE[0].value)) }, actions: { clearSession() { diff --git a/frontend/utils/constants.ts b/frontend/utils/constants.ts index acfab4f..719b4f6 100644 --- a/frontend/utils/constants.ts +++ b/frontend/utils/constants.ts @@ -8,10 +8,10 @@ export const MERCHANDISE_TYPE_CODES = { AUTRES: 'AUTRES' } as const -export const ROLE = { - ROLE_ADMIN : 'ROLE_ADMIN', - ROLE_USER : 'ROLE_USER' -} +export const ROLE = [ + { label: 'Administrateur', value: 'ROLE_ADMIN' }, + { label: 'Utilisateur', value: 'ROLE_USER' } +] export const SUPLLIER_CODE = { LIOT: 'LIOT' } -- 2.39.5 From 8411b8758758f1d281065624688fa90b85f0fb9d Mon Sep 17 00:00:00 2001 From: kevin Date: Mon, 9 Feb 2026 15:14:46 +0100 Subject: [PATCH 4/4] feat : creation d'une page d'aministration pour la ajout / modification d'utlisateur --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 2bafd91..259a25b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,6 +31,7 @@ Ajouter dans le fichier .env du frontend * [#268] Lister les réceptions terminées * [#316] Admin liste des transporteurs * [#312] Creation administration listing fournisseurs +* [#315] Creation page admin utilisateur ### Changed -- 2.39.5