В моем приложении только текущие администраторы могут создать нового пользователя. Это работает так, как задумано, но когда администратор создает пользователя, он входит во вновь созданную учетную запись.
Вот мой маршрут:
app.post('/adduser', isAdmin, passport.authenticate('local-signup', {
successRedirect : '/admin',
failureRedirect : '/adduser', an error
failureFlash : true
}));
Вот моя локальная регистрация:
passport.use('local-signup', new LocalStrategy({
// by default, local strategy uses username and password, we will override with email
usernameField : 'username',
passwordField : 'password',
passReqToCallback : true // allows us to pass in the req from our route (lets us check if a user is logged in or not)
},
function(req, username, password, done) {
if (username)
username = username.toLowerCase();
// asynchronous
process.nextTick(function() {
User.findOne({ 'local.username' : username }, function(err, user) {
// if there are any errors, return the error
if (err) {
return done(err);
}
// check to see if theres already a user with that email
if (user) {
return done(null, false, req.flash('signupMessage', 'That username is already taken.'));
}
// create the user
var newUser = new User();
newUser.local.username = username;
newUser.local.password = newUser.generateHash(password);
newUser.save(function(err) {
if (err) {
return done(err);
}
return done(null, newUser);
});
});
Это происходит из-за passport.authenticate (), когда я определяю свой маршрут? Как я могу создать пользователя без аутентификации. Должен ли я сделать это без passport.js и напрямую взаимодействовать с mongodb?