fix(frontend) : ERP-26 - fix Hydra response format (member not hydra:member) and IRI permissions

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Matthieu
2026-04-16 09:30:49 +02:00
parent 6101bd85ce
commit 07d53cdf8c
2 changed files with 14 additions and 8 deletions

View File

@@ -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<PermissionModule[]>(() => {
// 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) {

View File

@@ -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
}