Guest User

Untitled

a guest
May 17th, 2018
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. var vkStrategy = configAuth.vkAuth;
  2. var User = require('../app/models/user');
  3.  
  4. vkStrategy.passReqToCallback = true; // проверет, вошел ли пользователь в систему или нет
  5. passport.use(new VKStrategy(vkStrategy,
  6. function(req, accessToken, refreshToken, params, profile, done) {
  7.  
  8. // function (req, token, refreshToken, profile, done) {
  9. // ассинхронность
  10. process.nextTick(function() {
  11.  
  12. // проверка существования логина
  13. if (!req.user) {
  14.  
  15. User.findOrCreate({
  16. vkontakteId: profile.id
  17. }, function(err, user) {
  18. // User.findOne({'vkontakte.id': profile.id}, function (err, user) {
  19. if (err)
  20. return done(err);
  21. if (user) {
  22. if (!user.vkontakte.token) {
  23. user.vkontakte.token = token;
  24. user.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
  25. user.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
  26.  
  27. user.save(function(err) {
  28. if (err)
  29. return done(err);
  30.  
  31. return done(null, user);
  32. });
  33. }
  34.  
  35. return done(null, user); //если пользователь найден
  36. } else {
  37. // если нет, создаем нового
  38. var newUser = new User();
  39.  
  40. newUser.vkontakte.id = profile.id;
  41. newUser.vkontakte.token = token;
  42. newUser.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
  43. newUser.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
  44.  
  45. newUser.save(function(err) {
  46. if (err)
  47. return done(err);
  48.  
  49. return done(null, newUser);
  50. });
  51. }
  52. });
  53.  
  54. } else {
  55. // пользователь существует и вошел в систему, аккаунты связываются
  56. var user = req.user;
  57.  
  58. user.vkontakte.id = profile.id;
  59. user.vkontakte.token = token;
  60. user.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
  61. user.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
  62.  
  63. user.save(function(err) {
  64. if (err)
  65. return done(err);
  66.  
  67. return done(null, user);
  68. });
  69.  
  70. }
  71. });
  72.  
  73. }));
  74.  
  75. module.exports = {
  76. 'vkAuth': {
  77. 'lang': 'ru',
  78. 'clientID' : '###',
  79. 'clientSecret' : '#######',
  80. 'callbackURL' : 'http://localhost:8080/auth/vkontakte/callback',
  81. 'profileFields' : ['id', 'email', 'name']
  82. }
  83. }
  84.  
  85. var mongoose = require('mongoose');
  86. var bcrypt = require('bcrypt-nodejs');
  87. var userSchema = mongoose.Schema({
  88. vkontakte : {
  89. id : String,
  90. token : String,
  91. email : String,
  92. name : String
  93. }
  94.  
  95. });
  96. module.exports = mongoose.model('User', userSchema);
Add Comment
Please, Sign In to add comment