const UserModel = require('../models/UserModel') // وقتی توکن مالِ یه کاربرِ زیرمجموعه‌ست (is_sub_user)، req.user باید اکانتِ اصلی // (parent_account_id) باشه — نه خودِ سندِ زیرمجموعه — تا همه‌ی کنترلرهای فعلی // (پست/کامنت/فروشگاه/...) بدونِ هیچ تغییری محتوا رو به اکانتِ اصلی نسبت بدن. // req.actingSubUser فقط برای چکِ پرمیژن (requireSubUserPermission) استفاده می‌شه. // چون این لوکاپ هر بار از دیتابیس تازه انجام می‌شه (نه از خودِ JWT)، غیرفعال‌کردنِ // یه زیرمجموعه بلافاصله از درخواستِ بعدیش جلوگیری می‌کنه. async function resolveActingUser (userId) { const loaded = await UserModel.findById(userId) if (!loaded) { return { error: 'NOT_FOUND' } } if (!loaded.is_sub_user) { return { user: loaded, actingSubUser: null, rawUser: loaded } } if (loaded.sub_user_active === false) { return { error: 'SUB_USER_DISABLED' } } const parent = loaded.parent_account_id ? await UserModel.findById(loaded.parent_account_id) : null if (!parent) { return { error: 'NOT_FOUND' } } return { user: parent, rawUser: loaded, actingSubUser: { _id: loaded._id, permissions: loaded.sub_user_permissions || [] } } } module.exports = { resolveActingUser }