esameits24-26backend/src/middleware/auth.ts
AV77web 3e94fdb6d9
All checks were successful
Deploy to VPS / build (push) Successful in 16s
Deploy to VPS / deploy (push) Successful in 18s
commit per adattare il data model alla web app Academy aziendale
2026-07-14 10:31:30 +02:00

50 lines
1.4 KiB
TypeScript

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