Added few configurations & mores

This commit is contained in:
2026-01-22 18:53:23 +01:00
parent 9051491fd0
commit d5d0d5aaf4
30 changed files with 3309 additions and 80 deletions

View File

@@ -10,6 +10,7 @@ interface User {
id: string;
email: string;
name: string | null;
roleId?: string | null;
}
interface DashboardLayoutProps {
@@ -41,8 +42,18 @@ export default function DashboardLayout({ user, children }: DashboardLayoutProps
}
);
// Récupérer les pages accessibles pour l'utilisateur
const { data: userPagesData } = useSWR<{ pages: string[] }>(
'/api/user/pages',
fetcher
);
const accessiblePages = userPagesData?.pages || [];
// Calculer le nombre total de messages non lus
const totalUnreadCount = conversations?.reduce((sum, conv) => sum + (conv.unreadCount || 0), 0) || 0;
const totalUnreadCount = Array.isArray(conversations)
? conversations.reduce((sum, conv) => sum + (conv.unreadCount || 0), 0)
: 0;
const getUserInitials = () => {
if (user.name) {
@@ -173,6 +184,15 @@ export default function DashboardLayout({ user, children }: DashboardLayoutProps
const isMessagerie = item.href === '/dashboard/messagerie';
const showBadge = isMessagerie && totalUnreadCount > 0;
// Vérifier si l'utilisateur a accès à cette page
// Si accessiblePages est vide (chargement), afficher tous les liens
// Sinon, vérifier si la page est dans la liste
const hasAccess = accessiblePages.length === 0 || accessiblePages.includes(item.href);
if (!hasAccess) {
return null;
}
return (
<li key={item.href}>
<Link
@@ -271,19 +291,7 @@ export default function DashboardLayout({ user, children }: DashboardLayoutProps
<button
onClick={() => {
setShowProfileMenu(false);
// TODO: Navigate to profile page
}}
className="w-full px-3 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 rounded-lg transition-colors flex items-center gap-2"
>
<svg className="w-4 h-4" fill="none" stroke="currentColor" viewBox="0 0 24 24">
<path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M16 7a4 4 0 11-8 0 4 4 0 018 0zM12 14a7 7 0 00-7 7h14a7 7 0 00-7-7z" />
</svg>
Mon profil
</button>
<button
onClick={() => {
setShowProfileMenu(false);
// TODO: Navigate to settings
router.push('/dashboard/parametres');
}}
className="w-full px-3 py-2 text-left text-sm text-gray-700 hover:bg-gray-50 rounded-lg transition-colors flex items-center gap-2"
>