const AdminModel = require('../models/AdminModel') const jwt = require('jsonwebtoken') module.exports = async (req, res, next) => { 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') let decodedToken try { decodedToken = jwt.verify(token, process.env.APP_SECRET) } catch (err) { return res.status(401).send({ status: 'error', code: 401, message: 'Your token is not valid!', error: err.message }) } if (!decodedToken) { return res.status(401).send({ status: 'error', code: 401, message: 'Your token is not valid!' }) } try { // پیدا کردن کاربر با استفاده از اطلاعات موجود در توکن const admin = await AdminModel.findOne({ _id: decodedToken.id }) if (!admin) { return res.status(403).send({ status: 'error', code: 403, message: 'Access denied!' }) } // ادامه مسیر در صورتی که کاربر ادمین باشد req.admin = admin next() } catch (error) { return res.status(500).send({ status: 'error', code: 500, message: 'Internal Server Error', error: error.message }) } }