Как проверить, активен ли пользователь(1) или не использует паспорт (node.js)?

Я написал логику для входа в систему, пользователь может войти через электронную почту или (мобильный) номер телефона. Он работает нормально, но мне нужно проверить другое поле, пока пользователь входит в систему.

Если адрес электронной почты/номер телефона пользователя уже существует, то мне нужно проверить, является ли пользователь активным значением ‘0’ или ‘1’ .если его’ 0 ‘ пользователь не подтвердил, что время мне нужно отправить сообщение err вы еще не проверены .it its’ 1 ‘ then user able to continue the process

Активные средства :

Активные : 1

Как я могу это сделать?

Моя Схема Пользователя:

var UserSchema = new Schema({
  name: String,
  email: { type: String, lowercase: true },
  mobilenumber: {
        type: String,
        trim: true,
  },
  Active: {
        type: String,
        trim: true,
        default: '0',
    },

});

Паспорт :

exports.setup = function (User, config) {
  passport.use(new LocalStrategy({
      usernameField: 'email',
      passwordField: 'password' // this is the virtual field on the model
    },
    function(email, password, done) {
         var criteria = (email.indexOf('@') === -1) ? {
                 mobilenumber: email
            } : {
                 email: email
             };
      User.findOne(criteria, function(err, user) {
        if (err) return done(err);

        if (!user) {
          return done(null, false, { message: 'This email or mobilenumber is not registered.' });
        }
        if (!user.authenticate(password)) {
          return done(null, false, { message: 'This password is not correct.' });
        }
        return done(null, user);
      });
    }
  ));
};

Мой контроллер:

exports.show = function (req, res, next) {
  var userId = req.params.id;

  User.findById(userId, function (err, user) {
    if (err) return next(err);
    if (!user) return res.status(401).send('Unauthorized');
    res.json(user.profile);
  });
};

1 ответ

  1. Если проверка подлинности прошла успешно, необходимо сохранить некоторую информацию о пользователе в сеансе, а затем можно проверить, существует ли идентификатор пользователя или нет.

    В вашем AuthController.jsили любом контроллере, который вы используете,

        usr = req.user.auth_data;
        //check if the user already exists with that id.
        if ( req.user.user_data.id ) {
          UserInfo.findOne ( {user_id:req.user.user_data.id} ).exec(function (err,userDetails){
            if (err) {
              return res.send ( {error:err} );
            } else if (!req.user.user_data.email) {
              return res.view ('form/email');
            } else if (!userDetails) {
              // we have phone number already available
              return res.redirect('/profile');
            } else {   
              return res.redirect('/dashboard');
            }
          });
        } else {
        //its a new user show user a form for entrering the minimal necessary details.
          return res.view('form/emailphone',{ userDetails : req.user.user_data });
        }
    

    Кроме того, создайте политику, которая проверяет страницы, разрешенные только после входа в систему, поэтому, если сеанс пользователя истекает в промежутке, он может быть перенаправлен на домашнюю страницу.