// 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(), }; };