//==================================================== // 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; }; } } }