localStrategy.js 1.13 KB
const LocalStrategy = require('passport-local').Strategy;
const bcrypt = require('bcrypt');
const models = require('../models/index');

module.exports = (passport) => {
    passport.use(new LocalStrategy({
            usernameField: 'email',
            passwordField: 'password'
        }, async (email, password, done) => {
            try {
                let user = await models.User.findOne({where: {email}});
                if (!user) {
                    return done(null, false, {info: '이메일 또는 비밀번호가 일치하지 않습니다'});
                }
                const result = await bcrypt.compare(password, user.hashedPassword);
                if (!result) {
                    return done(null, false, {info: '이메일 또는 비밀번호가 일치하지 않습니다'});
                }
                user = await models.User.findOne({
                    where: {email},
                    attributes: ['id', 'email', 'nickName']
                });
                return done(null, user);
            } catch (e) {
                console.error(e);
                return done(e);
            }
        })
    );
};