2021-11-18 05:59:27 +01:00
|
|
|
const express = require("express");
|
|
|
|
const router = express.Router();
|
2021-11-15 09:23:48 +01:00
|
|
|
|
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-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
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",
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
|
|
|
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");
|
2021-11-18 05:59:27 +01:00
|
|
|
} else {
|
2021-11-21 01:26:36 +01:00
|
|
|
res.redirect("/");
|
2021-11-18 05:59:27 +01:00
|
|
|
}
|
2021-11-20 03:10:19 +01:00
|
|
|
});
|
2021-11-18 05:59:27 +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
|
|
|
}
|
|
|
|
});
|
|
|
|
});
|
|
|
|
|
2021-11-18 05:59:27 +01:00
|
|
|
router.get("/forgot-password", (_req, res) => {
|
2021-11-20 03:10:19 +01:00
|
|
|
res.render("pages/forgot-password");
|
2021-11-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
router.get("/otp", (_req, res) => {
|
2021-11-20 03:10:19 +01:00
|
|
|
res.render("pages/otp");
|
2021-11-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
router.get("/change-password", (_req, res) => {
|
2021-11-20 03:10:19 +01:00
|
|
|
res.render("pages/change-password");
|
2021-11-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
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-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
2021-11-21 02:46:39 +01:00
|
|
|
router.get(["/product", "/product/:id"], (req, res) => {
|
|
|
|
if (!req.params.id) {
|
|
|
|
auth.session_converter(req.cookies.session_token).then((key) => {
|
|
|
|
if (key != null) {
|
|
|
|
controller.getProduct(req.params.id).then((data) => {
|
|
|
|
if (data != undefined) {
|
|
|
|
res.render("pages/product", {
|
|
|
|
data: data,
|
|
|
|
loggedIn: 'true'
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
res.redirect("/products");
|
|
|
|
}
|
2021-11-21 01:18:04 +01:00
|
|
|
});
|
2021-11-21 02:46:39 +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 02:46:39 +01:00
|
|
|
}
|
|
|
|
});
|
|
|
|
} else {
|
|
|
|
res.redirect("/products")
|
|
|
|
}
|
2021-11-18 05:59:27 +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'
|
|
|
|
});
|
|
|
|
}
|
|
|
|
});
|
2021-11-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
|
|
|
router.get("/payment", (_req, res) => {
|
2021-11-21 01:18:04 +01:00
|
|
|
res.redirect("/");
|
2021-11-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
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-18 05:59:27 +01:00
|
|
|
});
|
|
|
|
|
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;
|