UNPKG

legendaryjs

Version:

LegendaryJS – The ultimate backend framework for speed, power, and simplicity.

50 lines (42 loc) 1.62 kB
const jwt = require('jsonwebtoken'); const session = require('express-session'); const passport = require('passport'); const GoogleStrategy = require('passport-google-oauth20').Strategy; const config = require('../legendary.config'); function setupAuth(app) { if (config.auth.session) { app.use(session({ secret: 'legendary', resave: false, saveUninitialized: false })); app.use(passport.initialize()); app.use(passport.session()); } if (config.auth.oauth) { passport.use(new GoogleStrategy({ clientID: process.env.GOOGLE_CLIENT_ID || '', clientSecret: process.env.GOOGLE_CLIENT_SECRET || '', callbackURL: '/auth/google/callback' }, (accessToken, refreshToken, profile, done) => { return done(null, profile); })); passport.serializeUser((user, done) => done(null, user)); passport.deserializeUser((obj, done) => done(null, obj)); app.get('/auth/google', passport.authenticate('google', { scope: ['profile', 'email'] })); app.get('/auth/google/callback', passport.authenticate('google', { failureRedirect: '/login' }), (req, res) => res.redirect('/')); } if (config.auth.jwt) { app.use((req, res, next) => { const token = req.headers.authorization?.split(' ')[1]; if (token) { try { req.user = jwt.verify(token, process.env.JWT_SECRET || 'legendary'); } catch (err) { console.warn('JWT verification failed'); } } next(); }); } console.log('🔐 Auth system ready'); } module.exports = { setupAuth };