"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.generateToken = generateToken; exports.verifyToken = verifyToken; exports.authMiddleware = authMiddleware; exports.optionalAuthMiddleware = optionalAuthMiddleware; exports.generateId = generateId; exports.getCurrentTimestamp = getCurrentTimestamp; const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); const db_1 = require("../db"); const schema_1 = require("../db/schema"); const drizzle_orm_1 = require("drizzle-orm"); const JWT_SECRET = process.env.JWT_SECRET || 'your-super-secret-jwt-key-change-in-production'; const JWT_EXPIRES_IN = '7d'; function generateToken(payload) { return jsonwebtoken_1.default.sign(payload, JWT_SECRET, { expiresIn: JWT_EXPIRES_IN }); } function verifyToken(token) { try { return jsonwebtoken_1.default.verify(token, JWT_SECRET); } catch { return null; } } async function authMiddleware(req, res, next) { const authHeader = req.headers.authorization; if (!authHeader || !authHeader.startsWith('Bearer ')) { res.status(401).json({ error: { code: 'UNAUTHORIZED', message: 'Missing or invalid authorization header', }, }); return; } const token = authHeader.slice(7); const payload = verifyToken(token); if (!payload) { res.status(401).json({ error: { code: 'UNAUTHORIZED', message: 'Invalid or expired token', }, }); return; } const user = await db_1.db.select({ id: schema_1.users.id }).from(schema_1.users).where((0, drizzle_orm_1.eq)(schema_1.users.id, payload.userId)).limit(1); if (user.length === 0) { res.status(401).json({ error: { code: 'UNAUTHORIZED', message: 'User no longer exists, please log in again', }, }); return; } req.user = payload; next(); } function optionalAuthMiddleware(req, res, next) { const authHeader = req.headers.authorization; if (authHeader && authHeader.startsWith('Bearer ')) { const token = authHeader.slice(7); const payload = verifyToken(token); if (payload) { req.user = payload; } } next(); } function generateId(prefix = '') { const timestamp = Date.now().toString(36); const random = Math.random().toString(36).slice(2, 10); return `${prefix}${prefix ? '_' : ''}${timestamp}${random}`; } function getCurrentTimestamp() { return Date.now(); } //# sourceMappingURL=auth.js.map