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:
@@ -84,7 +84,7 @@ interface Role {
|
|||||||
label: string
|
label: string
|
||||||
description: string | null
|
description: string | null
|
||||||
isSystem: boolean
|
isSystem: boolean
|
||||||
permissions: Permission[]
|
permissions: (Permission | string)[]
|
||||||
}
|
}
|
||||||
|
|
||||||
interface PermissionModule {
|
interface PermissionModule {
|
||||||
@@ -134,12 +134,12 @@ const permissionsByModule = computed<PermissionModule[]>(() => {
|
|||||||
|
|
||||||
// Charger les permissions au montage
|
// Charger les permissions au montage
|
||||||
async function loadPermissions() {
|
async function loadPermissions() {
|
||||||
const data = await api.get<{ 'hydra:member': Permission[] }>(
|
const data = await api.get<{ member: Permission[] }>(
|
||||||
'/permissions',
|
'/permissions',
|
||||||
{ 'orphan': false, itemsPerPage: 200 },
|
{ 'orphan': false, itemsPerPage: 200 },
|
||||||
{ toast: false },
|
{ toast: false },
|
||||||
)
|
)
|
||||||
allPermissions.value = data['hydra:member']
|
allPermissions.value = data.member
|
||||||
}
|
}
|
||||||
|
|
||||||
// Remplir le formulaire quand le role change
|
// Remplir le formulaire quand le role change
|
||||||
@@ -148,7 +148,13 @@ watch(() => props.role, (role) => {
|
|||||||
form.value.label = role.label
|
form.value.label = role.label
|
||||||
form.value.code = role.code
|
form.value.code = role.code
|
||||||
form.value.description = role.description || ''
|
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 {
|
} else {
|
||||||
form.value.label = ''
|
form.value.label = ''
|
||||||
form.value.code = ''
|
form.value.code = ''
|
||||||
@@ -196,7 +202,7 @@ async function handleSave() {
|
|||||||
label: form.value.label,
|
label: form.value.label,
|
||||||
code: form.value.code,
|
code: form.value.code,
|
||||||
description: form.value.description || null,
|
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) {
|
if (isEditMode.value && props.role) {
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ interface Role {
|
|||||||
label: string
|
label: string
|
||||||
description: string | null
|
description: string | null
|
||||||
isSystem: boolean
|
isSystem: boolean
|
||||||
permissions: Permission[]
|
permissions: (Permission | string)[]
|
||||||
}
|
}
|
||||||
|
|
||||||
const { t } = useI18n()
|
const { t } = useI18n()
|
||||||
@@ -132,12 +132,12 @@ const deleting = ref(false)
|
|||||||
async function loadRoles() {
|
async function loadRoles() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
try {
|
try {
|
||||||
const data = await api.get<{ 'hydra:member': Role[] }>(
|
const data = await api.get<{ member: Role[] }>(
|
||||||
'/roles',
|
'/roles',
|
||||||
{},
|
{},
|
||||||
{ toast: false },
|
{ toast: false },
|
||||||
)
|
)
|
||||||
roles.value = data['hydra:member']
|
roles.value = data.member
|
||||||
} finally {
|
} finally {
|
||||||
loading.value = false
|
loading.value = false
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user