Не пойму как релазивовать авторизацию на koa-passport, у меня ничего не сохраняет в сессии и поэтому меня не фиксируется пользователь и не могу реализовать logout. Для полного просмотра проекта
https://github.com/rusline18/crm-koa
Весь мой код app.js
const Koa = require('koa'),
router = require('./router/auth'),
bodyParser = require('koa-bodyparser'),
session = require('koa-session'),
passport = require('./bin/passport'),
...
app = new Koa();
app.keys = ['Secret CRM Key'];
app.use(session({}, app));
app.use(bodyParser());
...
app.use(passport.initialize());
app.use(passport.session());
app.use(router.routes());
module.exports = app;
В bin/passpor.js
const passport = require('koa-passport'),
LocalStrategy = require('passport-local').Strategy,
User = require('../models/user');
passport.use(new LocalStrategy(
(username, password, done) => {
User.findOne({username}, (err, user) => {
if (err) {
return done(err);
}
if (!user || !user.checkPassword(password)) {
return done(null, false, {message: 'Нет такого пользователя или пароль неверен.'});
}
return done(null, user);
});
})
);
passport.serializeUser((user, done) => {
done(null, user);
});
passport.deserializeUser((id, done) => {
User.findById(id, (err, user) => {
done(err, user.username);
})
});
module.exports = passport;
router/auth.js
const Router = require('koa-router'),
passport = require('../bin/passport'),
router = new Router();
router.post('/', async (ctx) => {
await passport.authenticate('local', async(err, user) => {
if(user === false){
await ctx.render('login', {title: 'Авторизация', message: 'Неверный логин или пароль'});
} else {
await ctx.redirect('/user');
}
})(ctx)
});
router.get('/user', async(ctx) => {
ctx.body = `Добро пожаловать ${ctx.passport.user}`;
});
router.get('/logout', async ctx => {
ctx.isAuthenticated();
await ctx.login();
ctx.redirect('/');
});
module.exports = router;