style(backend): fmt

This commit is contained in:
tigattack
2025-09-24 22:05:56 +01:00
parent 6d70a67a49
commit 591389a91f
18 changed files with 5891 additions and 4953 deletions

View File

@@ -1,106 +1,112 @@
const jwt = require('jsonwebtoken');
const { PrismaClient } = require('@prisma/client');
const jwt = require("jsonwebtoken");
const { PrismaClient } = require("@prisma/client");
const prisma = new PrismaClient();
// Middleware to verify JWT token
const authenticateToken = async (req, res, next) => {
try {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1]; // Bearer TOKEN
try {
const authHeader = req.headers["authorization"];
const token = authHeader && authHeader.split(" ")[1]; // Bearer TOKEN
if (!token) {
return res.status(401).json({ error: 'Access token required' });
}
if (!token) {
return res.status(401).json({ error: "Access token required" });
}
// Verify token
const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-secret-key');
// Get user from database
const user = await prisma.users.findUnique({
where: { id: decoded.userId },
select: {
id: true,
username: true,
email: true,
role: true,
is_active: true,
last_login: true,
created_at: true,
updated_at: true
}
});
// Verify token
const decoded = jwt.verify(
token,
process.env.JWT_SECRET || "your-secret-key",
);
if (!user || !user.is_active) {
return res.status(401).json({ error: 'Invalid or inactive user' });
}
// Get user from database
const user = await prisma.users.findUnique({
where: { id: decoded.userId },
select: {
id: true,
username: true,
email: true,
role: true,
is_active: true,
last_login: true,
created_at: true,
updated_at: true,
},
});
// Update last login
await prisma.users.update({
where: { id: user.id },
data: {
last_login: new Date(),
updated_at: new Date()
}
});
if (!user || !user.is_active) {
return res.status(401).json({ error: "Invalid or inactive user" });
}
req.user = user;
next();
} catch (error) {
if (error.name === 'JsonWebTokenError') {
return res.status(401).json({ error: 'Invalid token' });
}
if (error.name === 'TokenExpiredError') {
return res.status(401).json({ error: 'Token expired' });
}
console.error('Auth middleware error:', error);
return res.status(500).json({ error: 'Authentication failed' });
}
// Update last login
await prisma.users.update({
where: { id: user.id },
data: {
last_login: new Date(),
updated_at: new Date(),
},
});
req.user = user;
next();
} catch (error) {
if (error.name === "JsonWebTokenError") {
return res.status(401).json({ error: "Invalid token" });
}
if (error.name === "TokenExpiredError") {
return res.status(401).json({ error: "Token expired" });
}
console.error("Auth middleware error:", error);
return res.status(500).json({ error: "Authentication failed" });
}
};
// Middleware to check admin role
const requireAdmin = (req, res, next) => {
if (req.user.role !== 'admin') {
return res.status(403).json({ error: 'Admin access required' });
}
next();
if (req.user.role !== "admin") {
return res.status(403).json({ error: "Admin access required" });
}
next();
};
// Middleware to check if user is authenticated (optional)
const optionalAuth = async (req, res, next) => {
try {
const authHeader = req.headers['authorization'];
const token = authHeader && authHeader.split(' ')[1];
try {
const authHeader = req.headers["authorization"];
const token = authHeader && authHeader.split(" ")[1];
if (token) {
const decoded = jwt.verify(token, process.env.JWT_SECRET || 'your-secret-key');
const user = await prisma.users.findUnique({
where: { id: decoded.userId },
select: {
id: true,
username: true,
email: true,
role: true,
is_active: true,
last_login: true,
created_at: true,
updated_at: true
}
});
if (token) {
const decoded = jwt.verify(
token,
process.env.JWT_SECRET || "your-secret-key",
);
const user = await prisma.users.findUnique({
where: { id: decoded.userId },
select: {
id: true,
username: true,
email: true,
role: true,
is_active: true,
last_login: true,
created_at: true,
updated_at: true,
},
});
if (user && user.is_active) {
req.user = user;
}
}
next();
} catch (error) {
// Continue without authentication for optional auth
next();
}
if (user && user.is_active) {
req.user = user;
}
}
next();
} catch (error) {
// Continue without authentication for optional auth
next();
}
};
module.exports = {
authenticateToken,
requireAdmin,
optionalAuth
authenticateToken,
requireAdmin,
optionalAuth,
};