web/routes/index.js

262 lines
7.8 KiB
JavaScript
Raw Normal View History

const express = require("express");
const router = express.Router();
2021-11-20 08:13:06 +01:00
const auth = require("../auth/auth");
2021-11-16 07:19:35 +01:00
let controller = require("../controllers/controllers");
2021-11-16 00:44:33 +01:00
2021-11-21 01:18:04 +01:00
router.get("/", (req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.render("pages/index", {
loggedIn: 'true'
});
} else {
res.render("pages/index", {
loggedIn: 'false'
});
}
});
});
2021-11-20 03:10:19 +01:00
router.route("/register")
2021-11-21 02:16:15 +01:00
.get((req, res) => {
2021-11-21 01:18:04 +01:00
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.redirect("/");
} else {
res.render("pages/register");
}
});
2021-11-20 03:10:19 +01:00
})
.post((req, res) => {
controller.register(
req.body.email,
req.body.password,
req.body.first_name,
req.body.last_name
)
.then((data) => {
if (data == 200) {
res.render("pages/register-verification-sent");
} else {
2021-11-21 02:20:28 +01:00
res.redirect("/register");
2021-11-20 03:10:19 +01:00
}
});
});
router.route("/login")
2021-11-21 02:16:15 +01:00
.get((req, res) => {
2021-11-21 01:18:04 +01:00
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.redirect("/");
} else {
res.render("pages/login");
}
});
2021-11-20 03:10:19 +01:00
})
.post((req, res) => {
controller.login(
req.body.email,
req.body.password,
req.headers["user-agent"],
req.headers["x-forwarded-for"] || req.socket.remoteAddress
)
.then((data) => {
if (data[0] == 200) {
2021-11-20 08:13:06 +01:00
res.cookie('session_token', Buffer.from(JSON.stringify({'user_id': data[1].id, 'session_token': data[1].session_token})).toString('base64'), { maxAge: 2592000000, httpOnly: true });
2021-11-21 02:20:28 +01:00
res.redirect("/");
2021-11-20 03:10:19 +01:00
} else if (data[0] == 204) {
res.render("pages/login", {
error: "Please confim your account by checking your email",
});
} else if (data[0] == 205) {
res.render("pages/login", {
error: "Wrong Email or Password",
});
} else {
res.render("pages/login", {
error: "Wrong Email or Password",
});
}
});
});
2021-11-21 03:13:58 +01:00
router.route("/logout")
.get((req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.clearCookie("session_token");
auth.session_remove(key, req.cookies.session_token);
res.redirect("/");
} else {
res.redirect("/login");
}
});
})
2021-11-20 03:10:19 +01:00
router.get("/verify-mail", (req, res) => {
2021-11-21 01:26:36 +01:00
controller.verify_mail(req.query.token).then((data) => {
2021-11-17 09:52:36 +01:00
if (data == 200) {
2021-11-20 03:10:19 +01:00
res.render("pages/register-verification-success");
} else {
2021-11-21 01:26:36 +01:00
res.redirect("/");
}
2021-11-20 03:10:19 +01:00
});
});
2021-11-20 03:10:19 +01:00
router.route("/checkout")
2021-11-20 08:13:06 +01:00
.get((req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
2021-11-21 01:18:04 +01:00
res.render("pages/checkout", {
loggedIn: 'true'
});
2021-11-20 08:13:06 +01:00
} else {
2021-11-21 01:18:04 +01:00
res.redirect("/login");
2021-11-20 08:13:06 +01:00
}
});
2021-11-20 03:10:19 +01:00
})
.post((req, res) => {
2021-11-21 02:16:15 +01:00
auth.session_converter(req.cookies.session_token).then((key) => {
console.log(key);
if (key != null) {
controller.checkout(
req.body.firstName,
req.body.lastName,
req.body.phoneNumber,
req.body.streetAddress1,
req.body.streetAddress2,
req.body.region,
req.body.province,
req.body.city,
req.body.district,
req.body.subDistrict,
req.body.postalCode,
req.body.logistic,
req.body.data,
key
)
.then((data) => {
if (data[0] == 201) {
let total_price = 0;
let state = 0;
let order_data = JSON.parse(data[1].data);
for (let i=0; i<order_data.length; i++) {
controller.getProduct(order_data[i].product_id).then((resp) => {
state++;
total_price += parseInt(resp[0].PRICE * order_data[i].quantity);
if (state == order_data.length) {
res.render("pages/payment", {
orderId: data[1].order_id,
totalPrice: total_price,
});
}
2021-11-20 03:10:19 +01:00
});
}
2021-11-21 02:16:15 +01:00
}
});
} else {
res.redirect("/login");
2021-11-20 03:10:19 +01:00
}
});
});
router.get("/forgot-password", (_req, res) => {
2021-11-20 03:10:19 +01:00
res.render("pages/forgot-password");
});
router.get("/otp", (_req, res) => {
2021-11-20 03:10:19 +01:00
res.render("pages/otp");
});
router.get("/change-password", (_req, res) => {
2021-11-20 03:10:19 +01:00
res.render("pages/change-password");
});
2021-11-21 01:18:04 +01:00
router.get("/products", (req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
controller.getProducts().then((data) => {
res.render("pages/products", {
data: data,
loggedIn: 'true'
});
});
} else {
controller.getProducts().then((data) => {
res.render("pages/products", {
data: data,
loggedIn: 'false'
});
});
}
2021-11-20 03:10:19 +01:00
});
});
2021-11-21 02:46:39 +01:00
router.get(["/product", "/product/:id"], (req, res) => {
2021-11-21 03:27:02 +01:00
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
controller.getProduct(req.params.id).then((data) => {
res.render("pages/product", {
data: data,
loggedIn: 'true'
2021-11-21 01:18:04 +01:00
});
2021-11-21 03:27:02 +01:00
});
} else {
controller.getProduct(req.params.id).then((data) => {
res.render("pages/product", {
data: data,
loggedIn: 'false'
2021-11-21 01:18:04 +01:00
});
2021-11-21 03:27:02 +01:00
});
}
});
});
2021-11-21 01:18:04 +01:00
router.get("/bag", (req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.render("pages/bag", {
loggedIn: 'true'
});
} else {
res.render("pages/bag", {
loggedIn: 'false'
});
}
});
});
router.get("/payment", (_req, res) => {
2021-11-21 01:18:04 +01:00
res.redirect("/");
});
2021-11-21 01:18:04 +01:00
router.get("/about-us", (req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.render("pages/about-us", {
loggedIn: 'true'
});
} else {
res.render("pages/about-us", {
loggedIn: 'false'
});
}
});
});
2021-11-21 02:36:49 +01:00
router.get("/faq", (req, res) => {
auth.session_converter(req.cookies.session_token).then((key) => {
if (key != null) {
res.render("pages/faq", {
loggedIn: 'true'
});
} else {
res.render("pages/faq", {
loggedIn: 'false'
});
}
});
});
2021-11-20 03:10:19 +01:00
module.exports = router;