Spaces:
Runtime error
Runtime error
import jwt from 'jsonwebtoken' | |
import * as dotenv from 'dotenv' | |
import { Status, UserRole } from '../storage/model' | |
import { getUserById } from '../storage/mongo' | |
import { getCacheConfig } from '../storage/config' | |
dotenv.config() | |
const rootAuth = async (req, res, next) => { | |
const config = await getCacheConfig() | |
if (config.siteConfig.loginEnabled) { | |
try { | |
const token = req.header('Authorization').replace('Bearer ', '') | |
const info = jwt.verify(token, config.siteConfig.loginSalt.trim()) | |
req.headers.userId = info.userId | |
const user = await getUserById(info.userId) | |
if (user == null || user.status !== Status.Normal || !user.roles.includes(UserRole.Admin)) | |
res.send({ status: 'Fail', message: 'ζ ζι | No permission.', data: null }) | |
else | |
next() | |
} | |
catch (error) { | |
res.send({ status: 'Unauthorized', message: error.message ?? 'Please authenticate.', data: null }) | |
} | |
} | |
else { | |
res.send({ status: 'Fail', message: 'ζ ζι | No permission.', data: null }) | |
} | |
} | |
export { rootAuth } | |