'use client'; import React, { useState, useEffect } from 'react'; import { useRouter } from 'next/navigation'; import { Card, Table, Button } from '@zen/core/shared/components'; import { PencilEdit01Icon, Cancel01Icon } from '@zen/core/shared/icons'; import { useToast } from '@zen/core/toast'; const RolesPageClient = () => { const router = useRouter(); const toast = useToast(); const [roles, setRoles] = useState([]); const [loading, setLoading] = useState(true); const columns = [ { key: 'name', label: 'Rôle', sortable: false, render: (role) => (
{role.name}
{role.description && (
{role.description}
)}
{role.is_system && ( système )}
), skeleton: { height: 'h-4', width: '60%' } }, { key: 'permission_count', label: 'Permissions', sortable: false, render: (role) => ( {role.permission_count} ), skeleton: { height: 'h-4', width: '40px' } }, { key: 'user_count', label: 'Utilisateurs', sortable: false, render: (role) => ( {role.user_count} ), skeleton: { height: 'h-4', width: '40px' } }, { key: 'actions', label: '', sortable: false, noWrap: true, render: (role) => (
{!role.is_system && ( )}
), skeleton: { height: 'h-8', width: '80px', className: 'rounded-lg' } } ]; const fetchRoles = async () => { setLoading(true); try { const response = await fetch('/zen/api/roles', { credentials: 'include' }); if (!response.ok) throw new Error(`Error: ${response.status}`); const data = await response.json(); setRoles(data.roles); } catch (err) { toast.error(err.message || 'Impossible de charger les rôles'); } finally { setLoading(false); } }; const handleDelete = async (role) => { if (!confirm(`Supprimer le rôle "${role.name}" ?`)) return; try { const response = await fetch(`/zen/api/roles/${role.id}`, { method: 'DELETE', credentials: 'include' }); const data = await response.json(); if (!response.ok) { toast.error(data.message || 'Impossible de supprimer ce rôle'); return; } toast.success('Rôle supprimé'); fetchRoles(); } catch (err) { toast.error('Impossible de supprimer ce rôle'); } }; useEffect(() => { fetchRoles(); }, []); return ( ); }; const RolesPage = () => { const router = useRouter(); return (

Rôles

Gérez les rôles et leurs permissions

); }; export default RolesPage;