Added few configurations & mores
This commit is contained in:
@@ -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"
|
||||
>
|
||||
|
||||
Reference in New Issue
Block a user