2016-11-04 5 views
0

私はログインのロジックを書いており、ユーザーは電子メールまたは(携帯)電話番号でログインすることができます。それはうまくいっていますが、ユーザーがログインしている間に別のフィールドを確認する必要があります。ユーザーがアクティブ(1)かパスポート(node.js)を使用していないかどうかを確認するにはどうすればよいですか?

ユーザーの電子メール/電話番号が既に存在する場合は、ユーザーがアクティブ値 '0'か '

アクティブ:0は、その.IF 『1' 続いでき、ユーザはプロセスに

アクティブ手段を継続するために『1』のユーザーは、私はあなたがその.ITまだ検証されていないERRメッセージを送信する必要があり、その時点検証されていない』と。 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); 
    }); 
}; 

答えて

0

認証が成功すると、セッション中にユーザーに関するいくつかの情報を保存する必要がありますし、ユーザーのIDが存在するかどうかを確認できます。あなたの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 }); 
    } 

ユーザーのセッションが間に期限が切れるので、もしまた、唯一のログイン後に許可されたページをチェックするポリシーを作成して、それがにリダイレクトすることができますホームページ。

+0

ここで、私は自分のコードを変更する必要がありますpaaportまたはコントローラの機能@Viral –

+0

ユーザーexsistかどうかは既に行われていますが、そのユーザーのアクティブ値が0か1かどうかを確認する必要があります –

関連する問題