legendaryjs
Version:
LegendaryJS – The ultimate backend framework for speed, power, and simplicity.
50 lines (42 loc) • 1.62 kB
JavaScript
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 };