Passport.JS создать пользователя без аутентификации как его - PullRequest
0 голосов
/ 11 июня 2019

В моем приложении только текущие администраторы могут создать нового пользователя. Это работает так, как задумано, но когда администратор создает пользователя, он входит во вновь созданную учетную запись. Вот мой маршрут:

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?

...