Files
node_task_1c/routes/member/google.js
T

72 lines
1.9 KiB
JavaScript
Raw Normal View History

2022-10-03 19:59:51 +02:00
const OAuthService = require('../../services/OAuthService');
const JWTService = require('../../services/JwtService');
const AuthService = require('../../services/AuthService');
const ValidationService = require('../../services/ValidationService');
const db = require('../../models');
const app = require('express').Router();
// prettier-ignore
app.get('/member/google/initialize', async function (req, res) {
const role_id = 2
try {
const authenticationUrl = OAuthService.google.generateAuthURL({
redirect_uri: process.env.DYNAMIC_CONFIG_GOOGLE_REDIRECT_URI,
client_id: process.env.DYNAMIC_CONFIG_GOOGLE_CLIENT_ID,
});
res.redirect(authenticationUrl)
} catch (error) {
res.status(500).json({ success: false, message: error.message });
}
});
app.get('/member/google', async function (req, res) {
try {
const role_id = 2
const AuthViewModel = require('../../view_models/member_auth_view_model');
var viewModel = new AuthViewModel(db.user, 'Google login');
const authToken = await OAuthService.google.generateAuthToken({
redirect_uri: process.env.DYNAMIC_CONFIG_GOOGLE_REDIRECT_URI,
client_id: process.env.DYNAMIC_CONFIG_GOOGLE_CLIENT_ID,
client_secret: process.env.DYNAMIC_CONFIG_GOOGLE_CLIENT_SECRET,
auth_code: req.query.code,
});
const googleUser = await OAuthService.google.getUserInfo(authToken);
const payload = await OAuthService.authenticate({
provider: 'g',
id: googleUser.id,
email: googleUser.email,
first_name: googleUser.given_name,
last_name: googleUser.family_name,
image: googleUser.picture,
});
const session = req.session;
session.role = role_id;
session.user = payload.user;
return session.save((error) => {
if (error) {
throw new Error(error);
}
return res.redirect('/member/dashboard');
});
} catch (error) {
viewModel.error = error.message || "Something went wrong";
return res.render('member/Login', viewModel);
}
});
module.exports = app;