server / graphql /context.js
Mark-Lasfar
Add GraphQL
d100ebb
Raw
History Blame Contribute Delete
932 Bytes
// 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(),
};
};