Advertisement
Guest User

Untitled

a guest
Jan 9th, 2019
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.93 KB | None | 0 0
  1. //Require
  2. var CLIENT_ID = '338428604923-9taeevtkmulct5l5ebv4l59dm9cuag3k.apps.googleusercontent.com'
  3.  
  4. var request = require('request');
  5. var bcrypt = require('bcrypt');
  6. var jwtUtils = require('../utils/jwt.utils');
  7. var models = require('../models');
  8. var asyncLib = require('async');
  9. var server = require('../server')
  10. var stringUtils = require('../utils/string.utils');
  11. var session = require('express-session');
  12. var redisStore = require('connect-redis')(session);
  13.  
  14. module.exports = {
  15. loginGoogle: function (req, res) {
  16. var token = req.headers['token'];
  17.  
  18. if(token == null){
  19. return res.status(400).json({'error' : 'token is null'});
  20. }
  21.  
  22.  
  23. // const {OAuth2Client} = require('google-auth-library');
  24. // const client = new OAuth2Client(CLIENT_ID);
  25. // async function verify() {
  26. // const ticket = await client.verifyIdToken({
  27. // idToken: token,
  28. // audience: CLIENT_ID, // Specify the CLIENT_ID of the app that accesses the backend
  29. // // Or, if multiple clients access the backend:
  30. // //[CLIENT_ID_1, CLIENT_ID_2, CLIENT_ID_3]
  31. // });
  32. // const payload = ticket.getPayload();
  33. // const userid = payload['sub'];
  34. // // If request specified a G Suite domain:
  35. // //const domain = payload['hd'];
  36. // }
  37. // verify()
  38. // .then(function (req, res) {
  39.  
  40. // })
  41. // .catch(console.error);
  42.  
  43.  
  44.  
  45. request('https://www.googleapis.com/oauth2/v3/tokeninfo?id_token=' + token, function (error, response, body) {
  46. console.log('error:', error); // Print the error if one occurred
  47. console.log('statusCode:', response && response.statusCode); // Print the response status code if a response was received
  48. console.log('body:', body); // Print the HTML for the Google homepage.
  49. var jsonResponse = JSON.parse(body);
  50.  
  51.  
  52. if (response.statusCode != 200) {
  53. return res.status(500).json({'error' : 'an error has occured. Please see the console.'});
  54. }
  55.  
  56. if(jsonResponse.iss != 'accounts.google.com' && jsonResponse.iss != 'https://accounts.google.com'){
  57. console.log('ISS is not one of google');
  58. return res.status(500).json({'error' : 'please see the console'});
  59. }
  60.  
  61. if(jsonResponse.aud != CLIENT_ID){
  62. console.log('Error in the aud. This is not like the client id');
  63. return res.status(500).json({'error' : 'please see the console'});
  64.  
  65. }
  66.  
  67. var email = jsonResponse.email;
  68. var username = jsonResponse.name;
  69. var first_name = jsonResponse.given_name;
  70. var last_name = jsonResponse.family_name;
  71. var avatar = jsonResponse.picture;
  72. var profile = req.body.profile;
  73. var age = req.body.age;
  74. var cat = req.body.cat;
  75. var password = stringUtils.generateString(10);
  76. //WaterFall
  77.  
  78. asyncLib.waterfall([
  79. function(done) {
  80. models.User.findOne({
  81. attributes: ['email'],
  82. where: {email : email}
  83. })
  84. .then(function (userFound) {
  85. done(null, userFound);
  86. })
  87. .catch(function (err) {
  88.  
  89. return res.status(500).json({'error' : 'unable to verify user'});
  90.  
  91. })
  92. },
  93. function(userFound, done) {
  94.  
  95. if (!userFound) {
  96.  
  97. bcrypt.hash(password, 5, function(err, bcryptedPassword){
  98. done(null, userFound, bcryptedPassword);
  99.  
  100. });
  101.  
  102. } else {
  103. req.session.key = req.body.email;
  104. console.log(req.session.key);
  105. return res.status(201).json({
  106. 'userId': userFound.id,
  107.  
  108. });
  109. }
  110.  
  111.  
  112.  
  113. },
  114. function (userFound, bcryptedPassword, done) {
  115.  
  116. var newUser = models.User.create({
  117. email: email,
  118. avatar: avatar,
  119. username: username,
  120. password: bcryptedPassword,
  121. first_name: first_name,
  122. last_name: last_name,
  123. profile: profile,
  124. age: age,
  125. cat: cat,
  126. isAdmin: 0
  127.  
  128. })
  129. .then(function (newUser) {
  130. done(newUser);
  131. })
  132. .catch(function (err) {
  133. return res.status(500).json({'error' : 'unable to add user'});
  134. });
  135.  
  136. }
  137. ], function (newUser) {
  138. // result now equals 'done'
  139. if (newUser) {
  140. return res.status(201).json({
  141. 'userId' : newUser.id
  142. });
  143.  
  144. } else {
  145.  
  146. return res.status(500).json({'error' : 'unable to add user'});
  147.  
  148. }
  149. });
  150.  
  151. console.log(password);
  152.  
  153.  
  154.  
  155. });
  156. }
  157. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement