auth.js
var express = require('express');
var passport = require('passport');
var router = express.Router();
var path = require('path');
var mongoose = require('mongoose');
var session = require('express-session');
var flash = require('connect-flash');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var app = express();
require('./db/passport')(passport);
var colors = ["red", "orange", "yellow", "olive", "green", "teal", "blue", "violet", "purple", "pink", "brown"];
router.get('/login', function(req, res, next) {
res.render('auth/login', { title: 'URKC Login', color: colors[Math.round(Math.random() * colors.length)] });
});
router.get('/register', function(req, res, next) {
res.render('auth/register', { title: 'URKC Registration', color: colors[Math.round(Math.random() * colors.length)] });
});
router.post('/register', passport.authenticate('local-signup',{
successRedirect : '/login',
failureRedirect : '/register',
failureFlash: true
}));
// router.post('/register', passport.authenticate('local-signup'), function(req, res){
// console.log("passport user", req.user);
// });
// router.post('/login', passport.authenticate('local-signin',{
// successRedirect : '/',
// failureRedirect : '/login',
// failureFlash: true
// }));
// router.post("/register",
// function(req,res,next){
// passport.authenticate("local-signup", function(err, user, info){
// })(req,res,next);
// })
module.exports = router;
passport.js
var LocalStrategy = require('passport-local').Strategy;
var User = require('./ModelUser');
module.exports = function(passport){
passport.serializeUser(function(user, done){ // save in session
done(null, user.id);
});
passport.deserializeUser(function(id, done){ //compare with db and session
User.findById(id, function(err, user){
done(err, user);
})
});
//signupe
passport.use('local-signup', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
}, function (req, email, password, done) {
log.console(email);
User.findOne({'email': email}, function (err, user) {
log.console(password)
if (err) return done(null);
if (user) return done(null, false, req.flash('signupMessage', '중복된 아이디입니다.'));
const newUser = new User();
newUser.email = email;
newUser.password = newUser.generateHash(password);
newUser.name = req.body.name;
newUser.save(function (err) {
if (err) throw err;
return done(null, newUser);
});
})
}));
//login
passport.use('local-signin', new LocalStrategy({
usernameField: 'email',
passwordField: 'password',
passReqToCallback: true
},function(req,email,password,done){
User.findOne({'email': email}, function(err,user){
if(err) return done(err);
if(!user) return done(null,false,req.flash('signinMEssage','this userId is not existed'));
//valid password
if(!user.validPassword(password)) return done(null,false,req.flash('signinMessage','wrong password'));
return done(null, user);
});
}));
}
app.js
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var passport = require('passport');
var router = express.Router();
var path = require('path');
var mongoose = require('mongoose');
var session = require('express-session');
var flash = require('connect-flash');
var bodyParser = require('body-parser');
var morgan = require('morgan');
var LocalStrategy = require('passport-local').Strategy;
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var authRouter = require('./routes/auth');
//Functions related to auth
//set db
var app = express();
mongoose.connect('mongodb://localhost/user');
var db = mongoose.connection;
db.on('error', console.error.bind(console, 'connection error:'));
db.once('open', function() {
console.log('Conneted mongoDB');
});
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'pug');
app.use(session({
secret: 'secret',
resave: true,
saveUninitialized: true
}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
app.use('/', indexRouter);
app.use('/users', usersRouter);
app.use('/', authRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
require('./routes/db/passport')(passport);
module.exports = app;
I am trying to test my signup function in passport.js so i put post on auth.js, but I think it is not getting called and always send failureRequest. I put some console on function in passport.js to see weather it is getting called or not, but it is not printing any console log when it is post.

Aucun commentaire:
Enregistrer un commentaire