1const express = require("express");
2const router = express.Router();
3
4const authMiddleware = require("../middlewares/auth.middleware");
5
6const userController = require("../controllers/user.controller");
7const userValidator = require("../validators/user.validator");
8
9const settingsController = require("../controllers/settings.controller");
10const settingsValidator = require("../validators/settings.validator");
11
12const generalController = require("../controllers/general.controller");
13
14const replyController = require("../controllers/reply.controller");
15const replyValidator = require("../validators/reply.validator");
16
17const postController = require("../controllers/post.controller");
18const postValidator = require("../validators/post.validator");
19
20router.get("/", authMiddleware.addUserMeta, generalController.getIndexPage);
21
22// auth and user
23router.get("/login", userController.loginForm);
24router.get("/signup", userController.signUpForm);
25router.get("/forgot-password", userController.forgotPasswordForm);
26router.get(
27 "/u/:username",
28 authMiddleware.isSessionActive,
29 authMiddleware.addUserMeta,
30 userController.userProfilePage,
31);
32
33router.post(
34 "/signup",
35 userValidator.signUpNewUser,
36 userController.signupNewUser,
37);
38router.post("/login", userValidator.loginUser, userController.loginUser);
39router.get("/logout", userController.logoutUser);
40router.post(
41 "/forgot-password",
42 userValidator.sendForgotPasswordMail,
43 userController.sendForgotPasswordMail,
44);
45router.get(
46 "/reset-password",
47 userValidator.getResetPasswordForm,
48 userController.getResetPasswordForm,
49);
50router.post(
51 "/reset-password",
52 userValidator.resetPassword,
53 userController.resetPassword,
54);
55router.post(
56 "/change-password",
57 authMiddleware.isSessionActive,
58 authMiddleware.addUserMeta,
59 userValidator.changeUserPassword,
60 userController.changeUserPassword,
61);
62router.post(
63 "/update-profile",
64 authMiddleware.isSessionActive,
65 authMiddleware.addUserMeta,
66 userValidator.updateUserProfile,
67 userController.updateUserProfile,
68);
69
70// settings
71router.get(
72 "/settings",
73 authMiddleware.isSessionActive,
74 authMiddleware.addUserMeta,
75 authMiddleware.isAdmin,
76 settingsController.getSettingsPage,
77);
78router.get(
79 "/settings/new-board",
80 authMiddleware.isSessionActive,
81 authMiddleware.addUserMeta,
82 authMiddleware.isAdmin,
83 settingsController.getNewBoardPage,
84);
85
86router.post(
87 "/settings/new-board",
88 authMiddleware.isSessionActive,
89 authMiddleware.addUserMeta,
90 authMiddleware.isAdmin,
91 settingsValidator.createNewBoard,
92 settingsController.createNewBoard,
93);
94
95// boards
96router.get(
97 "/b/:board_slug",
98 authMiddleware.addUserMeta,
99 generalController.getBoardIndexPage,
100);
101
102// posts
103router.get(
104 "/p/:post_slug",
105 authMiddleware.addUserMeta,
106 postController.getPostPage,
107);
108router.get(
109 "/p/:post_slug/edit",
110 authMiddleware.addUserMeta,
111 postController.getPostEditPage,
112);
113router.get(
114 "/b/:board_slug/new-post",
115 authMiddleware.isSessionActive,
116 postController.getNewPostPage,
117);
118router.post(
119 "/b/:board_id/new-post",
120 authMiddleware.isSessionActive,
121 postValidator.createPost,
122 postController.createPost,
123);
124router.post(
125 "/p/:post_id/update",
126 authMiddleware.isSessionActive,
127 authMiddleware.addUserMeta,
128 postValidator.updatePost,
129 postController.updatePost,
130); // html forms only does post for submission
131
132// replies
133router.get(
134 "/p/:post_slug/new-reply",
135 authMiddleware.isSessionActive,
136 replyController.getNewReplyPage,
137);
138router.post(
139 "/p/:post_id/new-reply",
140 authMiddleware.isSessionActive,
141 replyValidator.createNewReply,
142 replyController.createNewReply,
143);
144
145module.exports = router;