UNPKG

flare-api

Version:

A modern, fast, and intuitive Node.js framework for building APIs

46 lines (45 loc) 2.06 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.setupGoogleAuth = exports.verifyToken = exports.generateToken = void 0; const jsonwebtoken_1 = __importDefault(require("jsonwebtoken")); const passport_1 = __importDefault(require("passport")); const passport_google_oauth20_1 = require("passport-google-oauth20"); const JWT_SECRET = process.env.JWT_SECRET || 'your_jwt_secret_key'; // Generating a token function generateToken(user) { return jsonwebtoken_1.default.sign({ id: user.id, email: user.email }, JWT_SECRET, { expiresIn: '1h' }); } exports.generateToken = generateToken; // Verifying a token and adding user to req object function verifyToken(req, res, next) { const token = req.headers['authorization']; if (!token) return res.status(401).json({ message: 'No token provided' }); jsonwebtoken_1.default.verify(token, JWT_SECRET, (err, decoded) => { if (err) return res.status(401).json({ message: 'Failed to authenticate token' }); req.user = decoded; next(); }); } exports.verifyToken = verifyToken; // Setting up Google authentication function setupGoogleAuth(app) { passport_1.default.use(new passport_google_oauth20_1.Strategy({ clientID: process.env.GOOGLE_CLIENT_ID || '', clientSecret: process.env.GOOGLE_CLIENT_SECRET || '', callbackURL: '/auth/google/callback', }, (accessToken, refreshToken, profile, done) => { // You would save the user to your database here return done(null, profile); })); app.use(passport_1.default.initialize()); app.get('/auth/google', passport_1.default.authenticate('google', { scope: ['profile', 'email'] })); app.get('/auth/google/callback', passport_1.default.authenticate('google', { failureRedirect: '/' }), (req, res) => { res.redirect('/'); }); } exports.setupGoogleAuth = setupGoogleAuth;