UNPKG

create-nodeapi-backend

Version:

A powerful Node.js backend boilerplate with Express, MongoDB, Firebase, JWT auth, Nodemailer, cron jobs, input validation (Joi), and serverless support for Vercel. Scaffold a full-featured API backend in seconds.

79 lines (66 loc) 1.86 kB
/** @format */ require("../../lib/google-service"); const router = require("express").Router(); const passport = require("passport"); const config = require("../../config/index"); const { failed, success } = require("../../controller/googleServiceController/googleController"); const { isLoggedIn } = require("../../middleware/googleMiddleware"); router.route("/failed").get(failed); router.route("/success").get(success, isLoggedIn); router.get( "/google", passport.authenticate("google", { scope: ["email", "profile"] }) ); router.get( "/google/callback", passport.authenticate("google", { failureRedirect: "/v1/googleOauth/failed" }), async (req, res) => { const { id, email, name, displayName, picture } = req.user; const { code, data, type, message } = await success({ id, email, name, displayName, picture }); if (!code) { return res.redirect( `http://${ config.protocol.frontend_origin }/signin?message=${encodeURIComponent("Invalid request")}` ); } if (code === 404) { return res.redirect( `http://${ config.protocol.frontend_origin }/signin?message=${encodeURIComponent(message)}` ); } if (code === 200) { const { id, token, email } = data; return res.redirect( `http://${ config.protocol.frontend_origin }/redirect?type=${type}&token=${encodeURIComponent( token.access )}&expiresIn=${encodeURIComponent( token.expiresIn )}&email=${encodeURIComponent(email)}&id=${id}` ); } } ); router.get("/logout", (req, res) => { req.session.destroy(); req.logout(); res.redirect("/"); }); module.exports = router;