Uczyłem się właśnie passport.js i tworzę localStrategy. Posiadam trzy dane wejściowe: username, email, password (Po wysłaniu formularza przez użytkownika wszystko się zapisuję poprawnie). Próbuje sprawdzić czy wpisany username istnieje w bazie, jeżeli tak zwrócić Error, jeżeli nie istnieje, next.
Adres email sprawdza poprawnie, jak próbowałem dopisać username przy każdej wprowadzonej nazwie zwracało błąd. Na końcu wpisałem powyżej find.One(), ale i tak nie działa,
const localRegister = new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, (req, email, password, next) => {
const username = req.body.username
if (password.length > 8)
return next(new Error('Hasło nie może być dłuższe niż 8 znaków.'))
if (username != null)
return next(new Error('Użytkownik z takim adresem email już istnieje, proszę się zalogować.'))
User.findOne({email: email}, (err, user) => {
if (err){
return next(err)
}
if (user != null)
return next(new Error('Użytkownik z takim adresem email już istnieje, proszę się zalogować.'))
//create the new user
const hashedPw = bcrypt.hashSync(password, 10)
User.create({username: username, email:email, password:hashedPw}, (err, user) => {
if (err)
return next(err)
next(null, user)
})
})