simple-images-upload/src/routes/auth.js
2023-09-23 20:54:44 +02:00

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;