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
JavaScript
/**
* 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
;