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

@@ -132,7 +132,7 @@ export const appRouter = router({
// Si l'utilisateur est formateur, ne montrer que les formations pour lesquelles il a des séquences
if (ctx.user.role === 'formateur' && ctx.user.formateurId) {
return db.getFormationsByFormateur(ctx.user.formateurId);
} else if (ctx.user.role === 'admin') {
} else if (ctx.user.role === 'admin' || ctx.user.role === 'super_formateur') {
return db.getFormations();
} else {
throw new TRPCError({ code: 'FORBIDDEN', message: 'Accès non autorisé' });
@@ -243,7 +243,7 @@ export const appRouter = router({
// Si l'utilisateur est formateur, ne montrer que les apprenants inscrits à ses séquences
if (ctx.user.role === 'formateur' && ctx.user.formateurId) {
return db.getApprenantsByFormateur(ctx.user.formateurId);
} else if (ctx.user.role === 'admin') {
} else if (ctx.user.role === 'admin' || ctx.user.role === 'super_formateur') {
return db.getApprenants();
} else {
throw new TRPCError({ code: 'FORBIDDEN', message: 'Accès non autorisé' });
@@ -386,7 +386,7 @@ export const appRouter = router({
// Si l'utilisateur est formateur, ne montrer que ses séquences
if (ctx.user.role === 'formateur' && ctx.user.formateurId) {
seqs = await db.getSequencesByFormateur(ctx.user.formateurId);
} else if (ctx.user.role === 'admin') {
} else if (ctx.user.role === 'admin' || ctx.user.role === 'super_formateur') {
seqs = await db.getSequencesWithFormation();
} else {
throw new TRPCError({ code: 'FORBIDDEN', message: 'Accès non autorisé' });
@@ -1279,7 +1279,7 @@ export const appRouter = router({
email: z.string().email().optional(),
username: z.string().min(3).optional(),
password: z.string().min(6).optional(),
role: z.enum(["user", "admin", "formateur"]).default("user"),
role: z.enum(["user", "admin", "formateur", "super_formateur"]).default("user"),
isActive: z.boolean().default(true),
formateurId: z.number().optional(),
})).mutation(async ({ input }) => {
@@ -1293,7 +1293,7 @@ export const appRouter = router({
email: z.string().email().optional(),
username: z.string().min(3).optional(),
password: z.string().min(6).optional(),
role: z.enum(["user", "admin", "formateur"]).optional(),
role: z.enum(["user", "admin", "formateur", "super_formateur"]).optional(),
isActive: z.boolean().optional(),
formateurId: z.number().optional(),
})).mutation(async ({ input }) => {