UNPKG

recoder-code

Version:

Complete AI-powered development platform with ML model training, plugin registry, real-time collaboration, monitoring, infrastructure automation, and enterprise deployment capabilities

71 lines 2.58 kB
"use strict"; /** * Authentication middleware and utilities */ var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.optionalAuth = exports.authenticateToken = exports.verifyToken = exports.generateToken = void 0; const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); const config_1 = __importDefault(require("./config")); const User_1 = require("./entities/User"); const database_1 = require("./database"); // Types for Express augmentation function generateToken(payload) { return jsonwebtoken_1.default.sign(payload, config_1.default.jwt.secret, { expiresIn: config_1.default.jwt.expiresIn, }); } exports.generateToken = generateToken; function verifyToken(token) { try { return jsonwebtoken_1.default.verify(token, config_1.default.jwt.secret); } catch (error) { throw new Error('Invalid token'); } } exports.verifyToken = verifyToken; async function authenticateToken(req, res, next) { try { const authHeader = req.headers.authorization; const token = authHeader && authHeader.split(' ')[1]; if (!token) { return res.status(401).json({ error: 'Access token required' }); } const decoded = verifyToken(token); const userRepository = database_1.AppDataSource.getRepository(User_1.User); const user = await userRepository.findOne({ where: { id: decoded.userId } }); if (!user || !user.is_active) { return res.status(401).json({ error: 'User not found or inactive' }); } req.user = user; next(); } catch (error) { return res.status(403).json({ error: 'Invalid token' }); } } exports.authenticateToken = authenticateToken; async function optionalAuth(req, res, next) { try { const authHeader = req.headers.authorization; const token = authHeader && authHeader.split(' ')[1]; if (token) { const decoded = verifyToken(token); const userRepository = database_1.AppDataSource.getRepository(User_1.User); const user = await userRepository.findOne({ where: { id: decoded.userId } }); if (user && user.is_active) { req.user = user; } } next(); } catch (error) { // Ignore auth errors for optional auth next(); } } exports.optionalAuth = optionalAuth; //# sourceMappingURL=auth.js.map