MusicTopus/src/routes/index.js
Damien Broqua a0f9ab1f45 issue/19 (#20)
!19

Co-authored-by: dbroqua <contact@darkou.fr>
Reviewed-on: dbroqua/MyMusicLibrary#20
Co-authored-by: Damien Broqua <dbroqua@noreply.localhost>
Co-committed-by: Damien Broqua <dbroqua@noreply.localhost>
2022-03-01 16:09:46 +01:00

138 lines
3.1 KiB
JavaScript

import express from "express";
import passport from "passport";
import { ensureLoggedIn } from "connect-ensure-login";
import Pages from "../middleware/Pages";
import Auth from "../middleware/Auth";
import Albums from "../middleware/Albums";
import render from "../libs/format";
// eslint-disable-next-line new-cap
const router = express.Router();
router.route("/").get((req, res, next) => {
try {
const page = new Pages(req, "home");
render(res, page);
} catch (err) {
next(err);
}
});
router
.route("/connexion")
.get((req, res, next) => {
try {
const page = new Pages(req, "connexion");
render(res, page);
} catch (err) {
next(err);
}
})
.post(
passport.authenticate("user", {
failureRedirect: "/connexion",
failureFlash: 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, next) => {
try {
const page = new Pages(req, "inscription");
render(res, page);
} catch (err) {
next(err);
}
})
.post(async (req, res) => {
try {
await Auth.register(req);
res.redirect("/");
} catch (err) {
res.redirect("/inscription");
}
});
router
.route("/ajouter-un-album")
.get(ensureLoggedIn("/connexion"), (req, res, next) => {
try {
const page = new Pages(req, "ajouter-un-album");
render(res, page);
} catch (err) {
next(err);
}
});
router
.route("/ma-collection")
.get(ensureLoggedIn("/connexion"), async (req, res, next) => {
try {
const page = new Albums(req, "mon-compte/ma-collection");
await page.loadMyCollection();
if (page.getPageContent("artists").length > 0) {
render(res, page);
} else {
res.redirect("/ajouter-un-album");
}
} catch (err) {
next(err);
}
});
router.route("/nous-contacter").get(async (req, res, next) => {
try {
const page = new Pages(req, "nous-contacter");
render(res, page);
} catch (err) {
next(err);
}
});
router.route("/composants").get(async (req, res, next) => {
try {
const page = new Pages(req, "composants");
render(res, page);
} catch (err) {
next(err);
}
});
router.route("/se-deconnecter").get((req, res) => {
req.logout();
req.session.destroy(() => {
res.redirect("/");
});
});
export default router;