diff --git a/.manus/db/db-query-1769704175404.json b/.manus/db/db-query-1769704175404.json new file mode 100644 index 0000000..d72fa65 --- /dev/null +++ b/.manus/db/db-query-1769704175404.json @@ -0,0 +1,9 @@ +{ + "query": "ALTER TABLE `users` MODIFY COLUMN `role` enum('user','admin','formateur','super_formateur') NOT NULL DEFAULT 'user';", + "command": "mysql --batch --raw --column-names --default-character-set=utf8mb4 --host gateway02.us-east-1.prod.aws.tidbcloud.com --port 4000 --user 4CrrYuB5tme73Qo.root --database 7PAT67UmWoxv8vwp8Bbcv6 --execute ALTER TABLE `users` MODIFY COLUMN `role` enum('user','admin','formateur','super_formateur') NOT NULL DEFAULT 'user';", + "rows": [], + "messages": [], + "stdout": "", + "stderr": "", + "execution_time_ms": 234 +} \ No newline at end of file diff --git a/client/src/components/DashboardLayout.tsx b/client/src/components/DashboardLayout.tsx index 8e4238a..bedfe2a 100644 --- a/client/src/components/DashboardLayout.tsx +++ b/client/src/components/DashboardLayout.tsx @@ -148,6 +148,10 @@ export default function DashboardLayout({ if (user && user.role === 'formateur' && location === '/admin') { setLocation('/formateur'); } + // Les super formateurs vont sur /admin comme les admins + if (user && user.role === 'super_formateur' && location === '/formateur') { + setLocation('/admin'); + } }, [user, location, setLocation]); if (loading) { @@ -224,6 +228,10 @@ function DashboardLayoutContent({ if (user?.role === 'formateur') { return section.title !== 'Configuration' && section.title !== 'Traçabilité' && section.title !== 'Analyses' && section.title !== 'Gestion technique'; } + // Les super formateurs ne voient pas Gestion technique + if (user?.role === 'super_formateur') { + return section.title !== 'Gestion technique'; + } return true; }).map(section => { // Modifier le chemin du tableau de bord pour les formateurs diff --git a/client/src/pages/AdminUsers.tsx b/client/src/pages/AdminUsers.tsx index 3e7c214..d767f2b 100644 --- a/client/src/pages/AdminUsers.tsx +++ b/client/src/pages/AdminUsers.tsx @@ -46,7 +46,7 @@ export default function AdminUsers() { email: "", username: "", password: "", - role: "user" as "user" | "admin" | "formateur", + role: "user" as "user" | "admin" | "formateur" | "super_formateur", formateurId: undefined as number | undefined, }); const [editForm, setEditForm] = useState({ @@ -54,7 +54,7 @@ export default function AdminUsers() { email: "", username: "", password: "", - role: "user" as "user" | "admin" | "formateur", + role: "user" as "user" | "admin" | "formateur" | "super_formateur", formateurId: undefined as number | undefined, }); @@ -277,6 +277,7 @@ export default function AdminUsers() { Administrateur Utilisateur Formateur + Super Formateur @@ -374,8 +375,8 @@ export default function AdminUsers() { {user.email || "N/A"} {user.username || "N/A"} - - {user.role === "admin" ? "Administrateur" : user.role === "formateur" ? "Formateur" : "Utilisateur"} + + {user.role === "admin" ? "Administrateur" : user.role === "formateur" ? "Formateur" : user.role === "super_formateur" ? "Super Formateur" : "Utilisateur"} @@ -512,11 +513,12 @@ export default function AdminUsers() { Utilisateur Administrateur Formateur + Super Formateur - {createForm.role === "formateur" && ( + {(createForm.role === "formateur" || createForm.role === "super_formateur") && (
- {editForm.role === "formateur" && ( + {(editForm.role === "formateur" || editForm.role === "super_formateur") && (