const jwt = require('jsonwebtoken') 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!' }) } // برای زیرمجموعه‌ها user_type معنا نداره (مالِ خودِ اکانتِ اصلیه، نه اونا) — // فقط برای اکانتِ اصلی این فیلد رو چک می‌کنیم const rawUser = resolved.rawUser if (!rawUser.user_name || !rawUser.first_name || !rawUser.password || (!rawUser.is_sub_user && !rawUser.user_type)) { return res.status(403).send({ status: 'error', code: 403, message: 'لطفا از بخش تنظیمات، ثبت نام خود را کامل کنید', type: 'not_register' }) } req.user = resolved.user req.actingSubUser = resolved.actingSubUser next() } catch (error) { console.error('not_register middleware:', error) res.status(500).send({ status: 'error', code: 500, message: 'Server error' }) } }