diff --git a/frontend/modules/core/components/RoleDrawer.vue b/frontend/modules/core/components/RoleDrawer.vue index ebd38e4..a774fbf 100644 --- a/frontend/modules/core/components/RoleDrawer.vue +++ b/frontend/modules/core/components/RoleDrawer.vue @@ -84,7 +84,7 @@ interface Role { label: string description: string | null isSystem: boolean - permissions: Permission[] + permissions: (Permission | string)[] } interface PermissionModule { @@ -134,12 +134,12 @@ const permissionsByModule = computed(() => { // Charger les permissions au montage async function loadPermissions() { - const data = await api.get<{ 'hydra:member': Permission[] }>( + const data = await api.get<{ member: Permission[] }>( '/permissions', { 'orphan': false, itemsPerPage: 200 }, { toast: false }, ) - allPermissions.value = data['hydra:member'] + allPermissions.value = data.member } // Remplir le formulaire quand le role change @@ -148,7 +148,13 @@ watch(() => props.role, (role) => { form.value.label = role.label form.value.code = role.code form.value.description = role.description || '' - selectedPermissionIds.value = new Set(role.permissions.map(p => p.id)) + selectedPermissionIds.value = new Set(role.permissions.map(p => { + // L'API peut retourner des objets Permission ou des IRIs string + if (typeof p === 'string') { + return Number(p.split('/').pop()) + } + return p.id + })) } else { form.value.label = '' form.value.code = '' @@ -196,7 +202,7 @@ async function handleSave() { label: form.value.label, code: form.value.code, description: form.value.description || null, - permissions: Array.from(selectedPermissionIds.value).map(id => ({ id })), + permissions: Array.from(selectedPermissionIds.value).map(id => `/api/permissions/${id}`), } if (isEditMode.value && props.role) { diff --git a/frontend/modules/core/pages/admin/roles.vue b/frontend/modules/core/pages/admin/roles.vue index 86d747c..e0e6e05 100644 --- a/frontend/modules/core/pages/admin/roles.vue +++ b/frontend/modules/core/pages/admin/roles.vue @@ -111,7 +111,7 @@ interface Role { label: string description: string | null isSystem: boolean - permissions: Permission[] + permissions: (Permission | string)[] } const { t } = useI18n() @@ -132,12 +132,12 @@ const deleting = ref(false) async function loadRoles() { loading.value = true try { - const data = await api.get<{ 'hydra:member': Role[] }>( + const data = await api.get<{ member: Role[] }>( '/roles', {}, { toast: false }, ) - roles.value = data['hydra:member'] + roles.value = data.member } finally { loading.value = false }