flare-api
Version:
A modern, fast, and intuitive Node.js framework for building APIs
46 lines (45 loc) • 2.06 kB
JavaScript
;
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;