Checkpoint: Ajout des permissions de gestion des attestations pour les formateurs et super-formateurs : création de formateurProcedure, fonction canAccessSequence pour vérifier les accès par séquence, modification des procédures uploadDocument, deleteDocument, sendAttestation et sendAllAttestations avec vérifications de permissions
This commit is contained in:
@@ -1,6 +1,36 @@
|
||||
import { eq, desc, and } from "drizzle-orm";
|
||||
import { eq, desc, and, isNotNull, sql } from "drizzle-orm";
|
||||
import { getDb } from "./db";
|
||||
import { formations, attestations, inscriptions, apprenants, sequences, datesFormation } from "../drizzle/schema";
|
||||
import { formations, attestations, inscriptions, apprenants, sequences, datesFormation, users } from "../drizzle/schema";
|
||||
|
||||
/**
|
||||
* Vérifier si un utilisateur a accès à une séquence
|
||||
* - Admins et super_formateurs : accès à tout
|
||||
* - Formateurs : accès uniquement à leurs séquences assignées
|
||||
*/
|
||||
export async function canAccessSequence(userId: number, userRole: string, sequenceId: number): Promise<boolean> {
|
||||
// Admins et super-formateurs ont accès à tout
|
||||
if (userRole === 'admin' || userRole === 'super_formateur') {
|
||||
return true;
|
||||
}
|
||||
|
||||
// Pour les formateurs, vérifier s'ils sont assignés à cette séquence
|
||||
if (userRole === 'formateur') {
|
||||
const db = await getDb();
|
||||
if (!db) return false;
|
||||
|
||||
// Récupérer le formateurId de l'utilisateur
|
||||
const user = await db.select({ formateurId: users.formateurId }).from(users).where(eq(users.id, userId)).limit(1);
|
||||
if (user.length === 0 || !user[0].formateurId) return false;
|
||||
|
||||
// Vérifier si le formateur est assigné à cette séquence
|
||||
const sequence = await db.select({ formateurId: sequences.formateurId }).from(sequences).where(eq(sequences.id, sequenceId)).limit(1);
|
||||
if (sequence.length === 0) return false;
|
||||
|
||||
return sequence[0].formateurId === user[0].formateurId;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Récupérer la configuration d'une formation
|
||||
|
||||
Reference in New Issue
Block a user