Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //Require
- var CLIENT_ID = '338428604923-9taeevtkmulct5l5ebv4l59dm9cuag3k.apps.googleusercontent.com'
- var request = require('request');
- var bcrypt = require('bcrypt');
- var jwtUtils = require('../utils/jwt.utils');
- var models = require('../models');
- var asyncLib = require('async');
- var server = require('../server')
- var stringUtils = require('../utils/string.utils');
- var session = require('express-session');
- var redisStore = require('connect-redis')(session);
- module.exports = {
- loginGoogle: function (req, res) {
- var token = req.headers['token'];
- if(token == null){
- return res.status(400).json({'error' : 'token is null'});
- }
- // const {OAuth2Client} = require('google-auth-library');
- // const client = new OAuth2Client(CLIENT_ID);
- // async function verify() {
- // const ticket = await client.verifyIdToken({
- // idToken: token,
- // audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
- // // Or, if multiple clients access the backend:
- // //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
- // });
- // const payload = ticket.getPayload();
- // const userid = payload['sub'];
- // // If request specified a G Suite domain:
- // //const domain = payload['hd'];
- // }
- // verify()
- // .then(function (req, res) {
- // })
- // .catch(console.error);
- request('https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' + token, function (error, response, body) {
- console.log('error:', error); // Print the error if one occurred
- console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
- console.log('body:', body); // Print the HTML for the Google homepage.
- var jsonResponse = JSON.parse(body);
- if (response.statusCode != 200) {
- return res.status(500).json({'error' : 'an error has occured. Please see the console.'});
- }
- if(jsonResponse.iss != 'accounts.google.com' && jsonResponse.iss != 'https://accounts.google.com'){
- console.log('ISS is not one of google');
- return res.status(500).json({'error' : 'please see the console'});
- }
- if(jsonResponse.aud != CLIENT_ID){
- console.log('Error in the aud. This is not like the client id');
- return res.status(500).json({'error' : 'please see the console'});
- }
- var email = jsonResponse.email;
- var username = jsonResponse.name;
- var first_name = jsonResponse.given_name;
- var last_name = jsonResponse.family_name;
- var avatar = jsonResponse.picture;
- var profile = req.body.profile;
- var age = req.body.age;
- var cat = req.body.cat;
- var password = stringUtils.generateString(10);
- //WaterFall
- asyncLib.waterfall([
- function(done) {
- models.User.findOne({
- attributes: ['email'],
- where: {email : email}
- })
- .then(function (userFound) {
- done(null, userFound);
- })
- .catch(function (err) {
- return res.status(500).json({'error' : 'unable to verify user'});
- })
- },
- function(userFound, done) {
- if (!userFound) {
- bcrypt.hash(password, 5, function(err, bcryptedPassword){
- done(null, userFound, bcryptedPassword);
- });
- } else {
- req.session.key = req.body.email;
- console.log(req.session.key);
- return res.status(201).json({
- 'userId': userFound.id,
- });
- }
- },
- function (userFound, bcryptedPassword, done) {
- var newUser = models.User.create({
- email: email,
- avatar: avatar,
- username: username,
- password: bcryptedPassword,
- first_name: first_name,
- last_name: last_name,
- profile: profile,
- age: age,
- cat: cat,
- isAdmin: 0
- })
- .then(function (newUser) {
- done(newUser);
- })
- .catch(function (err) {
- return res.status(500).json({'error' : 'unable to add user'});
- });
- }
- ], function (newUser) {
- // result now equals 'done'
- if (newUser) {
- return res.status(201).json({
- 'userId' : newUser.id
- });
- } else {
- return res.status(500).json({'error' : 'unable to add user'});
- }
- });
- console.log(password);
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement