UNPKG

skailan-core

Version:

Servicio de autenticación y multitenancy para Skailan.

50 lines 1.8 kB
import jwt from "jsonwebtoken"; const JWT_SECRET = process.env.JWT_SECRET || "skailan-secret"; export const requireAuth = async (req, res, next) => { const authHeader = req.headers.authorization; if (!authHeader) { res.status(401).json({ error: "No autenticado." }); return; } const token = authHeader.split(" ")[1]; if (!token) { res.status(401).json({ error: "Token no proporcionado." }); return; } try { const payload = jwt.verify(token, JWT_SECRET); req.user = payload; // Si el token incluye una organización activa, verificar la membresía if (payload.activeOrg) { const tenantPrisma = req.tenantPrisma; if (!tenantPrisma) { res.status(500).json({ error: "Tenant Prisma client not available." }); return; } const membership = await tenantPrisma.membership.findUnique({ where: { userId_organizationId: { userId: payload.id, organizationId: payload.activeOrg, }, }, include: { organization: true, }, }); if (!membership || membership.status !== "ACTIVE") { res.status(403).json({ error: "No eres miembro activo de esta organización." }); return; } req.organization = membership.organization; req.membership = membership; } next(); } catch (error) { console.error("Error en la autenticación:", error); res.status(401).json({ error: "Token inválido o expirado." }); return; } }; //# sourceMappingURL=auth.js.map