Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- var vkStrategy = configAuth.vkAuth;
- var User = require('../app/models/user');
- vkStrategy.passReqToCallback = true; // проверет, вошел ли пользователь в систему или нет
- passport.use(new VKStrategy(vkStrategy,
- function(req, accessToken, refreshToken, params, profile, done) {
- // function (req, token, refreshToken, profile, done) {
- // ассинхронность
- process.nextTick(function() {
- // проверка существования логина
- if (!req.user) {
- User.findOrCreate({
- vkontakteId: profile.id
- }, function(err, user) {
- // User.findOne({'vkontakte.id': profile.id}, function (err, user) {
- if (err)
- return done(err);
- if (user) {
- if (!user.vkontakte.token) {
- user.vkontakte.token = token;
- user.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
- user.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
- user.save(function(err) {
- if (err)
- return done(err);
- return done(null, user);
- });
- }
- return done(null, user); //если пользователь найден
- } else {
- // если нет, создаем нового
- var newUser = new User();
- newUser.vkontakte.id = profile.id;
- newUser.vkontakte.token = token;
- newUser.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
- newUser.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
- newUser.save(function(err) {
- if (err)
- return done(err);
- return done(null, newUser);
- });
- }
- });
- } else {
- // пользователь существует и вошел в систему, аккаунты связываются
- var user = req.user;
- user.vkontakte.id = profile.id;
- user.vkontakte.token = token;
- user.vkontakte.name = profile.name.givenName + ' ' + profile.name.familyName;
- user.vkontakte.email = (profile.emails[0].value || '').toLowerCase();
- user.save(function(err) {
- if (err)
- return done(err);
- return done(null, user);
- });
- }
- });
- }));
- module.exports = {
- 'vkAuth': {
- 'lang': 'ru',
- 'clientID' : '###',
- 'clientSecret' : '#######',
- 'callbackURL' : 'http://localhost:8080/auth/vkontakte/callback',
- 'profileFields' : ['id', 'email', 'name']
- }
- }
- var mongoose = require('mongoose');
- var bcrypt = require('bcrypt-nodejs');
- var userSchema = mongoose.Schema({
- vkontakte : {
- id : String,
- token : String,
- email : String,
- name : String
- }
- });
- module.exports = mongoose.model('User', userSchema);
Add Comment
Please, Sign In to add comment