Autentikasi Pengguna

Memastikan pengguna memasukkan data dengan lengkap, atau mengeluarkan error

// POST /login

if (req.body.email && req.body.password) {

} else {
    var err = new Error('Email and password are required.');
    err.status = 401;
    return next(err);
}

Selanjutnya kita menambahkan fitur autentikasi di model skema yang telah kita buat sebelumnya, melalui .statics

// authenticate input against database documents
UserSchema.statics.authenticate = function(email, password, callback) {
  User.findOne({ email: email })
      .exec(function (error, user) {
        if (error) {
          return callback(error);
        } else if ( !user ) {
          var err = new Error('User not found.');
          err.status = 401;
          return callback(err);
        }

        bcrypt.compare(password, user.password , function(error, result) {
          if (result === true) {
            return callback(null, user);
          } else {
            return callback();
          }
        })
      });
}

Lalu kembali ke index.js, kita akan memanggil fungsi search tersebut dan membandingkan dengan data yang dimasukkan pengguna di halaman login. Jika gagal akan mengembalikan error, jika sukses kita akan membuat session ID

// routes/index.js
//  POST /login

    User.authenticate(req.body.email, req.body.password, function (error, user) {
      if (error || !user) {
        var err = new Error('Wrong email or password.');
        err.status = 401;
        return next(err);
      } else {
        req.session.userId = user._id;
        return res.redirect('/profile');
      }
    });

Kemudian menambahkan session Id tersebut ketika pengguna melakukan registrasi, sehingga dia otomatis telah login dengan menambahkan session

// POST /register
//    Users.create() with no error

req.session.userId = user._id;

results matching ""

    No results matching ""