76 lines
1.8 KiB
JavaScript
76 lines
1.8 KiB
JavaScript
/* eslint-disable func-names */
|
|
import express from 'express';
|
|
import passport from 'passport';
|
|
|
|
import Pages from '../middleware/Pages';
|
|
import Auth from '../middleware/Auth';
|
|
import render from '../libs/Render';
|
|
|
|
// eslint-disable-next-line new-cap
|
|
const router = express.Router();
|
|
|
|
router
|
|
.route('/connexion')
|
|
.get((req, res) => {
|
|
const page = new Pages(req, 'connexion');
|
|
return render(req, res, null, page);
|
|
})
|
|
.post(
|
|
passport.authenticate('user', {
|
|
failureRedirect: '/connexion',
|
|
failureMessage: true,
|
|
}),
|
|
(req, res) => {
|
|
const {next, query} = req.body;
|
|
let url = `/${next}`;
|
|
|
|
if (next) {
|
|
if (query) {
|
|
const params = JSON.parse(query);
|
|
Object.keys(params).forEach((key) => {
|
|
url += `${url.indexOf('?') === -1 ? '?' : '&'}${key}=${
|
|
params[key]
|
|
}`;
|
|
});
|
|
}
|
|
return res.redirect(url);
|
|
}
|
|
return res.redirect('/');
|
|
},
|
|
);
|
|
|
|
router
|
|
.route('/inscription')
|
|
.get((req, res) => {
|
|
const page = new Pages(req, 'inscription');
|
|
return render(req, res, null, page);
|
|
})
|
|
.post(async (req, res) => {
|
|
try {
|
|
const page = new Auth(req);
|
|
await page.register(req);
|
|
|
|
return res.redirect('/');
|
|
} catch (err) {
|
|
if (err.errors) {
|
|
Object.keys(err.errors).forEach((key) => {
|
|
req.session.messages.push(err.errors[key].toString());
|
|
});
|
|
} else {
|
|
req.session.messages.push(err);
|
|
}
|
|
|
|
return res.redirect('/inscription');
|
|
}
|
|
});
|
|
|
|
router.route('/se-deconnecter').get((req, res) => {
|
|
req.session.destroy(() => {
|
|
req.logout(() =>
|
|
res.redirect('/'),
|
|
);
|
|
});
|
|
});
|
|
|
|
export default router;
|