import passport from 'passport' import { ExtractJwt, Strategy } from 'passport-jwt' import config from '../config/appConfig.js' import { User } from '../db/index.js' const options = { jwtFromRequest: ExtractJwt.fromAuthHeaderAsBearerToken(), secretOrKey: config.jwt.secrect } passport.use(new Strategy(options, async (payload, done) => { try { const result = await User.findOne({ _id: payload.userId }) if (result) { const { _id, linkedTo, role } = result return done(null, { buildingId: linkedTo.toHexString(), role, userId: _id.toHexString(), valid: true }) } return done(null, false) } catch (err) { done(err, false) } })) export function setupAuthentication (app) { app.use(passport.initialize()) } export default passport.authenticate('jwt', { session: false })