File size: 932 Bytes
3dee8ac d100ebb 3dee8ac d100ebb 3dee8ac | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | // graphql/context.js
const jwt = require('jsonwebtoken');
const { User } = require('../server');
const { createLoaders } = require('./loaders');
module.exports = async ({ req }) => {
// استخراج التوكن من الـ Headers
const authHeader = req.headers.authorization || '';
const token = authHeader.replace('Bearer ', '');
let user = null;
if (token) {
try {
const decoded = jwt.verify(token, process.env.JWT_SECRET);
// جلب المستخدم من قاعدة البيانات
user = await User.findById(decoded.userId)
.select('username email isAdmin profile')
.lean();
if (user) {
user.userId = decoded.userId;
}
} catch (error) {
console.log('Invalid token:', error.message);
}
}
return {
user,
userId: user?.userId || null,
isAdmin: user?.isAdmin || false,
req,
loaders: createLoaders(),
};
}; |