Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 06.12.2016, 23:46
Новичок на форуме
Отправить личное сообщение для LoKeR Посмотреть профиль Найти все сообщения от LoKeR
 
Регистрация: 24.01.2014
Сообщений: 5

Помогите с авторизацией, делаю по примеру скринкаста Ильи
Проблема в том что метод User.singin ничего не возвращает, даже console.log, а опыта еще не хватает у меня(((

и еще не работает в схеме типы Data, Double, и default: Data.now

Подскажите пожалуйста!)

Код модели users:
var crypto     = require('crypto');
var async      = require('async');
var mongoose   = require('../libs/mongoose');
var Schema     = mongoose.Schema;

var schema = new Schema({
    login: {
        type: String,
        unique: true
    },
    phone: {
        required: true,
        type: String,
        unique: true
    },
    hashPassword: {
        required: true,
        type: String
    },
    salt: {
        type: String,
        required: true
    },
    balance: {
        type: Double,
        default: 0.00
    },
    singupData: {
        type: Data,
        default: Data.now
    }
});
schema.methods.encryptPassword = function(password) {
    return crypto.createHmac('sha1', this.salt).update(password).digest('hex');
};

schema.virtual('password')
    .set(function(password) {
        this._plainPassword = password;
        this.salt = Math.random() + '';
        this.hashPassword = this.encryptPassword(password);
    })
    .get(function() { return this._plainPassword; });

schema.methods.checkPassword = function (password) {
    return this.encryptPassword(password) === this.hashPassword;
};

schema.statics.singup = function (phone, password) {
  return phone + ' / ' + password;
};

schema.statics.singin = function (phone, password, callback) {
    var User = this;

    console.log(phone + ' + ' + password);

    async.waterfall([
        function (callback) {
            User.findOne({phone: phone, hashPassword: this.checkPassword(password)}, callback)
        },
        function (user, callback) {
            if(user) {
                callback(null, user);
            } else {
                callback(message = 'Телефон или пароль не верны!', null);
            }
        }
    ], callback);
};


exports.User = mongoose.model('User', schema);


Код роута:
router.post('/singin', function (req, res, next) {
    var phone      = req.body.phone;
    var password   = req.body.password;

    User.singin(phone, password, function (err, user) {
        if(err) {
            return next(err);

            console.log(err);
        }

        console.log(user);

        req.session.user = user._id;
        res.send({});
    });
});
Ответить с цитированием
  #2 (permalink)  
Старый 07.12.2016, 12:41
Новичок на форуме
Отправить личное сообщение для seaman Посмотреть профиль Найти все сообщения от seaman
 
Регистрация: 24.11.2016
Сообщений: 4

Не помню чтобы Илья использовал router. Говорил о нем, но использовал прямые функции app.post...
Роутер к приложению подключен?
Здесь показано как (в конце страницы).
http://expressjs.com/ru/guide/routing.html
типа:
app.use('/path', router);
Ответить с цитированием
  #3 (permalink)  
Старый 07.12.2016, 14:00
Новичок на форуме
Отправить личное сообщение для LoKeR Посмотреть профиль Найти все сообщения от LoKeR
 
Регистрация: 24.01.2014
Сообщений: 5

var router = require('express').Router();

router.post('/singin', function (req, res, next) {
    var phone      = req.body.phone;
    var password   = req.body.password;

    User.singin(phone, password, function (err, user) {
        if(err) {
            return next(err);

            console.log(err);
        }

        console.log(user);

        req.session.user = user._id;
        res.send({});
    });
});

module.exports = router;


seaman, так понятнее?
Ответить с цитированием
  #4 (permalink)  
Старый 07.12.2016, 14:04
Новичок на форуме
Отправить личное сообщение для seaman Посмотреть профиль Найти все сообщения от seaman
 
Регистрация: 24.11.2016
Сообщений: 4

Я это вижу.
Вы по ссылке ходили? Вот это там видели?-
Код:
Потом загрузите модуль маршрутизации в приложение:
var birds = require('./birds');
...
app.use('/birds', birds);
Т.е. Вот это у Вас есть?
Код:
var router = require('./router');
app.use('путь', router);
Да, и обратите внимание, что путь в роутере относительно того, что прописан в app.use

Последний раз редактировалось seaman, 07.12.2016 в 14:12.
Ответить с цитированием
  #5 (permalink)  
Старый 07.12.2016, 14:15
Новичок на форуме
Отправить личное сообщение для LoKeR Посмотреть профиль Найти все сообщения от LoKeR
 
Регистрация: 24.01.2014
Сообщений: 5

Дело вовсе не в роутинге было!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
делаю обложку помогите mixnet Events/DOM/Window 1 16.09.2014 13:43