yarkov
@yarkov
Помог ответ? Отметь решением.

Я дибил или как? Что с монгой?

При регистрации пользователю в mongo пишется 2 поля:
confirm_code: "SHA512 hash" и confirmed: false
После того, как он переходит по ссылке подтверждения поле confirmed меняется на true.
РЕАЛЬНО МЕНЯЕТСЯ! Я вижу в консоли результат - ОНО TRUE!
Теперь при авторизации проверяем это поле и если оно не true, а ОНО TRUE, то не пускаем на сайт. Но это поле возвращается как undefined. Привожу отрывок кода:
User
		.getUser({
				email: authObj.email,
				password: _password
			}, 
			function (err, user) {
				if (err) {
					console.log(err);
				}
				if (!user) {
					errors.push("Неверный Email или пароль!");
					return res.status(400).json({
						error: true,
						messages: errors
					});
				}
				console.log("CONFIRMED:", user.confirmed); // <- undefined, а в БД оно TRUE
				
				//#TODO:FIXME
				if (!user.confirmed) {
					errors.push("Не подтвержденный Email! Перейдите по ссылке в письме для подтверждения Email.");
					return res.status(403).json({
						error: true, 
						messages: errors
					});
				} 
				else {
					// ... здесь пишем в сессию и т. д. Короче авторизация юзера. Но до этого места не срабатывает.

Что за фигня?
  • Вопрос задан
  • 324 просмотра
Решения вопроса 1
yarkov
@yarkov Автор вопроса
Помог ответ? Отметь решением.
Угадайте что было!!!!!!!!!!!
Я олень добавил перечень полей в условия выборки:
.select('_id email settings lastlogin regdate role settings')

И не включил сюда поле проверки почты......
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы