Как создать двух авторизованных пользователей (администратор, клиент) на одной странице входа? - PullRequest
0 голосов
/ 17 января 2019

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

маршруты / users.js

 // Passport
 passport.use(new LocalStrategy(
  function(username,password, done){
  Customer.getUserByUsername(username, function(err,user){
   if(err) throw err;
   if(!user){
     return done(null, false, {message: 'Unknown User'});
   }

   Customer.comparePassword(password,user.password,function(err, isMatch){
     if(err) throw err;
     if(isMatch){
       return done(null, user);
     } else {
          return done(null, false, {message:'Invalid password'});
     }
   });
 });
}));



 passport.serializeUser(function(user, done) {
  done(null, user.id);
  });

  passport.deserializeUser(function(id, done) {
  Customer.getUserById(id, function(err, user) {
  done(err, user);
   });
  });


  router.post('/login',
  passport.authenticate('local',{successRedirect:'/home', 
  failureRedirect:'/login',failureFlash: true}),
  function(req,res){
    res.redirect('/home');
  });

Ниже кода модели моей модели.

  var UserSchema = mongoose.Schema({
  name: {
   type:String
   },
   username: {
   type: String,
   unique: true
   },
   email:{
   type: String
   },
   password:{
   type: String
   },
  confirmpassword : {
  type: String
  }

  });

  var Customer = module.exports = mongoose.model('Customer',UserSchema);
  module.exports.createUser = function(newUser,callback){

  bcrypt.genSalt(10,function(err,salt){
  bcrypt.hash(newUser.password,salt,function(err,hash){
        newUser.password = hash;
        newUser.save(callback);
  });
  });
  }

  module.exports.getUserByUsername = function(username, callback)
  {
  var query = {username: username};
  Customer.findOne(query,callback);
  }

  module.exports.getUserById = function(id, callback)
  {
  Customer.findById(id,callback);
  }


  module.exports.comparePassword = function(candidatePassword, hash, 
 callback) 
 {
 bcrypt.compare(candidatePassword, hash, function(err, isMatch){
  if(err) throw err;
  callback(null, isMatch);
  console.log(isMatch);
  });
 }

Может кто-нибудь сказать мне, как я могу разработать две авторизованные системы входа на одной странице. Если администратор войдет в систему, то система будет перенаправлена ​​на панель администратора. Если пользователь не авторизуется, он будет перенаправлен на панель пользователя.

1 Ответ

0 голосов
/ 17 января 2019

Я думаю, что самый простой подход для достижения этой цели - создать в таблице флаг для ролей, например, создать ключ is_admin для пользователей с правами администратора.После, чем во время входа в систему, добавьте также проверку для пользователя, является ли флаг is_admin истинным или ложным.Если это правда, то создайте промежуточное программное обеспечение для этого и добавьте это промежуточное программное обеспечение в маршруты для администратора.

...