feat(auth): secure backend authentication modes

This commit is contained in:
SaidSoighiri94
2026-07-23 12:35:21 +02:00
parent f7ce98343e
commit 313bb1c6ef
8 changed files with 323 additions and 32 deletions
+5 -23
View File
@@ -1,28 +1,10 @@
import { Request, Response, NextFunction } from 'express';
import { AppError } from '../errors/app-error';
import { findByEmail } from '../repositories/utilisateur.repository';
import { AuthenticatedUser } from '../types/authenticated-user';
import { authenticateUser } from '../services/authentication.service';
/* Auth simulée (temporaire) : en attendant Azure AD, l'utilisateur courant est
résolu depuis l'en-tête `x-user-email`. À remplacer par la validation du JWT. */
export async function currentUser(req: Request, _res: Response, next: NextFunction): Promise<void> {
const email = req.header('x-user-email');
if (!email) {
throw new AppError(401, 'En-tete x-user-email requis (auth simulee)');
}
const utilisateur = await findByEmail(email);
if (!utilisateur || !utilisateur.actif) {
throw new AppError(401, 'Utilisateur non reconnu');
}
const authenticated: AuthenticatedUser = {
id: utilisateur.id,
email: utilisateur.email,
roleCode: utilisateur.role.code,
campusId: utilisateur.campusId,
};
req.user = authenticated;
req.user = await authenticateUser({
authorization: req.header('authorization'),
demoEmail: req.header('x-user-email'),
});
next();
}