const jwt = require('jsonwebtoken') const { canUseProjects, respondProjectProfileIncomplete, } = require('../utils/projectProfile') const { resolveActingUser } = require('../utils/subUserAuth') /** حداقل ثبت‌نام برای پروژه: نام کاربری + نام */ module.exports = async (req, res, next) => { try { if (!('authorization' in req.headers)) { return res.status(401).send({ status: 'error', code: 401, message: 'You are not authorized!', }) } const token = req.header('Authorization').split(' ')[1] if (!token) return res.status(401).send('Access Denied') const decodedToken = jwt.verify(token, process.env.APP_SECRET) if (!decodedToken) { return res.status(401).send({ status: 'error', code: 401, message: 'Your token is not valid!', }) } const resolved = await resolveActingUser(decodedToken.id) if (resolved.error === 'SUB_USER_DISABLED') { return res.status(401).send({ status: 'error', code: 401, message: 'این حساب کاربری غیرفعال شده است', }) } if (resolved.error) { return res.status(401).send({ status: 'error', code: 401, message: 'Your token is not valid!', }) } if (!canUseProjects(resolved.user)) { return respondProjectProfileIncomplete(res) } req.user = resolved.user req.actingSubUser = resolved.actingSubUser next() } catch (error) { console.error('isBasicRegister middleware:', error) res.status(500).send({ status: 'error', code: 500, message: 'Server error', }) } }