Checkpoint: Ajout du rôle super_formateur avec accès à toutes les formations et séquences. Migration SQL appliquée en local et sur le VPS de production.

This commit is contained in:
Manus
2026-01-29 11:35:35 -05:00
parent 1a8d598339
commit c16392900c
9 changed files with 2331 additions and 14 deletions

View File

@@ -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() {
<SelectItem value="admin">Administrateur</SelectItem>
<SelectItem value="user">Utilisateur</SelectItem>
<SelectItem value="formateur">Formateur</SelectItem>
<SelectItem value="super_formateur">Super Formateur</SelectItem>
</SelectContent>
</Select>
</div>
@@ -374,8 +375,8 @@ export default function AdminUsers() {
<TableCell>{user.email || "N/A"}</TableCell>
<TableCell>{user.username || "N/A"}</TableCell>
<TableCell>
<Badge variant={user.role === "admin" ? "default" : user.role === "formateur" ? "outline" : "secondary"}>
{user.role === "admin" ? "Administrateur" : user.role === "formateur" ? "Formateur" : "Utilisateur"}
<Badge variant={user.role === "admin" ? "default" : user.role === "formateur" ? "outline" : user.role === "super_formateur" ? "default" : "secondary"}>
{user.role === "admin" ? "Administrateur" : user.role === "formateur" ? "Formateur" : user.role === "super_formateur" ? "Super Formateur" : "Utilisateur"}
</Badge>
</TableCell>
<TableCell>
@@ -512,11 +513,12 @@ export default function AdminUsers() {
<SelectItem value="user">Utilisateur</SelectItem>
<SelectItem value="admin">Administrateur</SelectItem>
<SelectItem value="formateur">Formateur</SelectItem>
<SelectItem value="super_formateur">Super Formateur</SelectItem>
</SelectContent>
</Select>
</div>
{createForm.role === "formateur" && (
{(createForm.role === "formateur" || createForm.role === "super_formateur") && (
<div>
<Label htmlFor="createFormateur">Formateur associé</Label>
<Select
@@ -629,11 +631,12 @@ export default function AdminUsers() {
<SelectItem value="user">Utilisateur</SelectItem>
<SelectItem value="admin">Administrateur</SelectItem>
<SelectItem value="formateur">Formateur</SelectItem>
<SelectItem value="super_formateur">Super Formateur</SelectItem>
</SelectContent>
</Select>
</div>
{editForm.role === "formateur" && (
{(editForm.role === "formateur" || editForm.role === "super_formateur") && (
<div>
<Label htmlFor="editFormateur">Formateur associé</Label>
<Select

View File

@@ -12,7 +12,7 @@ export default function Home() {
useEffect(() => {
if (!loading && isAuthenticated) {
if (user?.role === 'admin') {
if (user?.role === 'admin' || user?.role === 'super_formateur') {
setLocation('/admin');
} else if (user?.role === 'formateur') {
setLocation('/formateur');
@@ -28,7 +28,7 @@ export default function Home() {
);
}
if (isAuthenticated && (user?.role === 'admin' || user?.role === 'formateur')) {
if (isAuthenticated && (user?.role === 'admin' || user?.role === 'formateur' || user?.role === 'super_formateur')) {
return null;
}