esameits24-26backend/src/middleware/auth.ts

51 lines
1.4 KiB
TypeScript
Raw Normal View History

//====================================================
// File: auth.ts
// File middleware per gestionre dell'autenticazione
// e le autorizzazini dei dipendenti/referenti academy
// author: "villari.andrea@libero.it"
// version: "1.0.0 2026-07-14"
//====================================================
import { getSession } from "@auth/express";
import type { NextFunction, Request, Response } from "express";
import { authConfig } from "../auth/config.js";
import type { Ruolo } from "../types/index.js";
export async function requireAuth(req: Request, res: Response, next: NextFunction) {
const session = await getSession(req, authConfig);
if (!session?.user?.id) {
res.status(401).json({ error: "Autenticazione richiesta" });
return;
}
req.user = {
id: Number(session.user.id),
email: session.user.email,
name: session.user.name,
ruolo: session.user.ruolo,
};
next();
}
export function requireReferenteAcademy(req: Request, res: Response, next: NextFunction) {
if (req.user?.ruolo !== "Referente Academy") {
res.status(403).json({ error: "Operazione riservata ai referenti Academy" });
return;
}
next();
}
/** @deprecated Usare requireReferenteAcademy */
export const requireAmministratore = requireReferenteAcademy;
declare global {
namespace Express {
interface Request {
user?: {
id: number;
email: string;
name: string;
ruolo: Ruolo;
};
}
}
}