| |
| const jwt = require('jsonwebtoken'); |
| const { User } = require('../server'); |
| const { createLoaders } = require('./loaders'); |
|
|
| module.exports = async ({ req }) => { |
| |
| 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(), |
| }; |
| }; |