RBAC #346 - Interface Admin : Gestion des Rôles (Frontend) #5

Closed
matthieu wants to merge 8 commits from feat/rbac-admin-roles into feat/rbac-voter
2 changed files with 14 additions and 8 deletions
Showing only changes of commit 07d53cdf8c - Show all commits

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
}