| | const { logger } = require('@librechat/data-schemas'); |
| | const { SystemRoles } = require('librechat-data-provider'); |
| | const { Strategy: JwtStrategy, ExtractJwt } = require('passport-jwt'); |
| | const { getUserById, updateUser } = require('~/models'); |
| |
|
| | |
| | const jwtLogin = () => |
| | new JwtStrategy( |
| | { |
| | jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), |
| | secretOrKey: process.env.JWT_SECRET, |
| | }, |
| | async (payload, done) => { |
| | try { |
| | const user = await getUserById(payload?.id, '-password -__v -totpSecret -backupCodes'); |
| | if (user) { |
| | user.id = user._id.toString(); |
| | if (!user.role) { |
| | user.role = SystemRoles.USER; |
| | await updateUser(user.id, { role: user.role }); |
| | } |
| | done(null, user); |
| | } else { |
| | logger.warn('[jwtLogin] JwtStrategy => no user found: ' + payload?.id); |
| | done(null, false); |
| | } |
| | } catch (err) { |
| | done(err, false); |
| | } |
| | }, |
| | ); |
| |
|
| | module.exports = jwtLogin; |
| |
|