diff --git a/src/index.ts b/src/index.ts index 9bc101bad1c27f7090efc43224a4690219018c70..d8ecbaf48e4e5c53a336a0b1a8a300d6774c7505 100644 --- a/src/index.ts +++ b/src/index.ts @@ -3,17 +3,12 @@ import "./utils/env"; import { ErrorHandler, handleError } from "./middlewares/utils/ErrorHandler"; import express, { Application, NextFunction, Request, Response } from "express"; -import authRoute from "./routes/auth"; import bodyParser from "body-parser"; import expressSession from "express-session"; -import filesRoute from "./routes/files"; import mongoose from "mongoose"; import morgan from "morgan"; import multer from "multer"; -import newsRoute from "./routes/news"; -import notificationsRoute from "./routes/notifications"; -import termsRoute from "./routes/terms"; -import usersRoute from "./routes/user"; +import { setRouters } from "./routes/setRouters"; mongoose .connect("mongodb://localhost:27017/bodysch", { @@ -61,21 +56,9 @@ app.use((req: Request, res: Response, next: NextFunction) => { next(); }); -// Register routes -const prefix = "/api/v1"; -authRoute(prefix, app); +setRouters(app); -filesRoute(`${prefix}/files`, app); - -newsRoute(`${prefix}/news`, app); - -notificationsRoute(`${prefix}/notifications`, app); - -termsRoute(`${prefix}/terms`, app); - -usersRoute(`${prefix}/users`, app); - -app.use((err: any, req: Request, res: Response, next: NextFunction) => { +app.use((err: any, req: Request, res: Response) => { if (err instanceof ErrorHandler) return handleError(err, res); if ( err instanceof mongoose.Error.CastError || diff --git a/src/routes/setRouters.ts b/src/routes/setRouters.ts new file mode 100644 index 0000000000000000000000000000000000000000..bc232c53e8e3244b6bcc1a6ffcc3e37d6aef7963 --- /dev/null +++ b/src/routes/setRouters.ts @@ -0,0 +1,27 @@ +import { Application } from "express"; +import authRoute from "./auth"; +import filesRoute from "./files"; +import newsRoute from "./news"; +import notificationsRoute from "./notifications"; +import termsRoute from "./terms"; +import userMembershipRoute from "./users/membership"; +import userWarningsRoute from "./users/warning"; +import usersRoute from "./users/user"; + +const prefix = "/api/v1"; + +export const setRouters = (app: Application): void => { + authRoute(prefix, app); + + filesRoute(`${prefix}/files`, app); + + newsRoute(`${prefix}/news`, app); + + notificationsRoute(`${prefix}/notifications`, app); + + termsRoute(`${prefix}/terms`, app); + + usersRoute(`${prefix}/users`, app); + userMembershipRoute(`${prefix}/users`, app); + userWarningsRoute(`${prefix}/users`, app); +}; diff --git a/src/routes/users/membership.ts b/src/routes/users/membership.ts new file mode 100644 index 0000000000000000000000000000000000000000..0a57b9d1c1acd5c8713e4d95888ddfa61f95de41 --- /dev/null +++ b/src/routes/users/membership.ts @@ -0,0 +1,34 @@ +import { Application } from "express"; +import getUserTermMemberships from "../../middlewares/term/getUserTermMemberships"; +import isAdmin from "../../middlewares/auth/isAdmin"; +import isRegistered from "../../middlewares/auth/isRegistered"; +import responseTermsList from "../../middlewares/term/responseTermsList"; +import setOwnUserId from "../../middlewares/user/setOwnUserId"; + +const userMembershipRoute = (prefix: string, app: Application): void => { + /** + * Get list of User Term memberships + * Role: ADMIN + */ + app.get( + `${prefix}/user/:userId/terms`, + isRegistered(), + isAdmin(), + getUserTermMemberships(), + responseTermsList() + ); + + /** + * Get list of own Term memberships + * Role: NORMAL + */ + app.get( + `${prefix}/me/terms`, + isRegistered(), + setOwnUserId(), + getUserTermMemberships(), + responseTermsList() + ); +}; + +export default userMembershipRoute; diff --git a/src/routes/user.ts b/src/routes/users/user.ts similarity index 53% rename from src/routes/user.ts rename to src/routes/users/user.ts index b0c9d70700880c43978ebca6c83e2648c2508aa3..b54277fd44de97a5f29e70b91c1e211697989eff 100644 --- a/src/routes/user.ts +++ b/src/routes/users/user.ts @@ -1,31 +1,24 @@ import { Application } from "express"; -import acceptPicture from "../middlewares/user/acceptPicture"; -import addWarning from "../middlewares/user/warning/addWarning"; -import createdResponse from "../middlewares/utils/createdResponse"; -import deleteFile from "../middlewares/files/deleteFile"; -import deleteUser from "../middlewares/user/deleteUser"; -import deleteWarning from "../middlewares/user/warning/deleteWarning"; -import example from "../middlewares/example"; -import getFieldValue from "../middlewares/utils/getFieldValue"; -import getUser from "../middlewares/user/getUser"; -import getUserTermMemberships from "../middlewares/term/getUserTermMemberships"; -import getUserWarningsList from "../middlewares/user/warning/getUserWarningsList"; -import getUsersList from "../middlewares/user/getUsersList"; -import isAdmin from "../middlewares/auth/isAdmin"; -import isLoggedIn from "../middlewares/auth/isLoggedIn"; -import isNotRegistered from "../middlewares/auth/isNotRegistered"; -import isRegistered from "../middlewares/auth/isRegistered"; -import noContentResponse from "../middlewares/utils/noContentResponse"; -import registerOwnUser from "../middlewares/user/registerOwnUser"; -import rejectPicture from "../middlewares/user/rejectPicture"; -import responseTermsList from "../middlewares/term/responseTermsList"; -import responseUser from "../middlewares/user/responseUser"; -import responseUsersList from "../middlewares/user/responseUsersList"; -import responseWarningsList from "../middlewares/user/warning/responseWarningsList"; -import setOwnUserId from "../middlewares/user/setOwnUserId"; -import updateTermMember from "../middlewares/term/updateTermMember"; -import updateUser from "../middlewares/user/updateUser"; -import updateWarning from "../middlewares/user/warning/updateWarning"; +import acceptPicture from "../../middlewares/user/acceptPicture"; +import createdResponse from "../../middlewares/utils/createdResponse"; +import deleteFile from "../../middlewares/files/deleteFile"; +import deleteUser from "../../middlewares/user/deleteUser"; +import getFieldValue from "../../middlewares/utils/getFieldValue"; +import getUser from "../../middlewares/user/getUser"; +import getUserTermMemberships from "../../middlewares/term/getUserTermMemberships"; +import getUsersList from "../../middlewares/user/getUsersList"; +import isAdmin from "../../middlewares/auth/isAdmin"; +import isLoggedIn from "../../middlewares/auth/isLoggedIn"; +import isNotRegistered from "../../middlewares/auth/isNotRegistered"; +import isRegistered from "../../middlewares/auth/isRegistered"; +import noContentResponse from "../../middlewares/utils/noContentResponse"; +import registerOwnUser from "../../middlewares/user/registerOwnUser"; +import rejectPicture from "../../middlewares/user/rejectPicture"; +import responseTermsList from "../../middlewares/term/responseTermsList"; +import responseUser from "../../middlewares/user/responseUser"; +import responseUsersList from "../../middlewares/user/responseUsersList"; +import setOwnUserId from "../../middlewares/user/setOwnUserId"; +import updateUser from "../../middlewares/user/updateUser"; const usersRoute = (prefix: string, app: Application): void => { /** @@ -199,63 +192,6 @@ const usersRoute = (prefix: string, app: Application): void => { getUserTermMemberships(), responseTermsList() ); - - /** - * Add new warning - * Role: Admin - */ - app.post( - `${prefix}/user/:userId/warnings`, - isRegistered(), - isAdmin(), - addWarning([{ name: "text", required: true }]), - noContentResponse() - ); - - /** - * Get user warnings - * Role: Admin - */ - app.get( - `${prefix}/user/:userId/warnings`, - isRegistered(), - isAdmin(), - getUserWarningsList(), - responseWarningsList() - ); - /** - * Get Own warnings - * Role: Normal - */ - app.get( - `${prefix}/me/warnings`, - isRegistered(), - setOwnUserId(), - getUserWarningsList(), - responseWarningsList() - ); - /** - * Delete Warning - * Role: Admin - */ - app.delete( - `${prefix}/user/:userId/warning/:warningId`, - isRegistered(), - isAdmin(), - deleteWarning(), - noContentResponse() - ); - /** - * Update Warning - * Role: Admin - */ - app.put( - `${prefix}/user/:userId/warning/:warningId`, - isRegistered(), - isAdmin(), - updateWarning(["text"]), - noContentResponse() - ); }; export default usersRoute; diff --git a/src/routes/users/warning.ts b/src/routes/users/warning.ts new file mode 100644 index 0000000000000000000000000000000000000000..3f4cb21c8ba006bdc218175a897cd927b19d63cb --- /dev/null +++ b/src/routes/users/warning.ts @@ -0,0 +1,71 @@ +import { Application } from "express"; +import addWarning from "../../middlewares/user/warning/addWarning"; +import deleteWarning from "../../middlewares/user/warning/deleteWarning"; +import getUserWarningsList from "../../middlewares/user/warning/getUserWarningsList"; +import isAdmin from "../../middlewares/auth/isAdmin"; +import isRegistered from "../../middlewares/auth/isRegistered"; +import noContentResponse from "../../middlewares/utils/noContentResponse"; +import responseWarningsList from "../../middlewares/user/warning/responseWarningsList"; +import setOwnUserId from "../../middlewares/user/setOwnUserId"; +import updateWarning from "../../middlewares/user/warning/updateWarning"; + +const userWarningsRoute = (prefix: string, app: Application): void => { + /** + * Add new warning + * Role: Admin + */ + app.post( + `${prefix}/user/:userId/warnings`, + isRegistered(), + isAdmin(), + addWarning([{ name: "text", required: true }]), + noContentResponse() + ); + + /** + * Get user warnings + * Role: Admin + */ + app.get( + `${prefix}/user/:userId/warnings`, + isRegistered(), + isAdmin(), + getUserWarningsList(), + responseWarningsList() + ); + /** + * Get Own warnings + * Role: Normal + */ + app.get( + `${prefix}/me/warnings`, + isRegistered(), + setOwnUserId(), + getUserWarningsList(), + responseWarningsList() + ); + /** + * Delete Warning + * Role: Admin + */ + app.delete( + `${prefix}/user/:userId/warning/:warningId`, + isRegistered(), + isAdmin(), + deleteWarning(), + noContentResponse() + ); + /** + * Update Warning + * Role: Admin + */ + app.put( + `${prefix}/user/:userId/warning/:warningId`, + isRegistered(), + isAdmin(), + updateWarning(["text"]), + noContentResponse() + ); +}; + +export default userWarningsRoute;