From 4dcc3450a52cb7e8f20734cf196ba6074c04bd7b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=A1szl=C3=B3?= <rlacko99@gmail.com> Date: Sun, 24 Jan 2021 19:06:38 +0100 Subject: [PATCH] fix bugs --- src/middlewares/files/createFile.ts | 7 ++++--- src/middlewares/files/imageFilter.ts | 2 +- src/middlewares/term/getTerm.ts | 5 ++--- src/middlewares/term/isBeforeDeadline.ts | 18 ++++++++++++++++++ src/models/TermSchema.ts | 4 ++-- src/routes/files.ts | 22 +++++++++++----------- src/routes/terms.ts | 20 +++++++++++--------- src/routes/users/user.ts | 2 +- 8 files changed, 50 insertions(+), 30 deletions(-) create mode 100644 src/middlewares/term/isBeforeDeadline.ts diff --git a/src/middlewares/files/createFile.ts b/src/middlewares/files/createFile.ts index 05aec916..a49017a1 100644 --- a/src/middlewares/files/createFile.ts +++ b/src/middlewares/files/createFile.ts @@ -1,8 +1,7 @@ import { NextFunction, Request, Response } from "express"; - -import { ErrorHandler } from "../utils/ErrorHandler"; -import File from "../../models/FileSchema"; import fs from "fs"; +import File from "../../models/FileSchema"; +import { ErrorHandler } from "../utils/ErrorHandler"; const createFile = () => async ( req: Request, @@ -10,6 +9,8 @@ const createFile = () => async ( next: NextFunction ) => { try { + if (!req.file) throw new ErrorHandler(400, "File wasn't provided"); + const newFile = new File(); newFile.originalName = req.file.originalname; diff --git a/src/middlewares/files/imageFilter.ts b/src/middlewares/files/imageFilter.ts index c8e2f406..6ac4fb0b 100644 --- a/src/middlewares/files/imageFilter.ts +++ b/src/middlewares/files/imageFilter.ts @@ -1,5 +1,5 @@ -import { ErrorHandler } from "../utils/ErrorHandler"; import { FileFilterCallback } from "multer"; +import { ErrorHandler } from "../utils/ErrorHandler"; export function imageFilter( req: Express.Request, diff --git a/src/middlewares/term/getTerm.ts b/src/middlewares/term/getTerm.ts index 8d9af82a..1df2a15b 100644 --- a/src/middlewares/term/getTerm.ts +++ b/src/middlewares/term/getTerm.ts @@ -1,11 +1,10 @@ import { NextFunction, Request, Response } from "express"; - import Term from "../../models/TermSchema"; /** * termId -> term */ -const getTerm = (sendBgFile = false) => async ( +const getTerm = () => async ( req: Request, res: Response, next: NextFunction @@ -20,7 +19,7 @@ const getTerm = (sendBgFile = false) => async ( endDate: 1, deadline: 1, createDate: 1, - backgroundFile: sendBgFile ? 1 : 0, + backgroundFile: 1, members: { $elemMatch: { user: req.params.userId } }, } ) diff --git a/src/middlewares/term/isBeforeDeadline.ts b/src/middlewares/term/isBeforeDeadline.ts new file mode 100644 index 00000000..a832b78a --- /dev/null +++ b/src/middlewares/term/isBeforeDeadline.ts @@ -0,0 +1,18 @@ +import { NextFunction, Request, Response } from "express"; + +const isBeforeDeadline = () => async ( + req: Request, + res: Response, + next: NextFunction +) => { + try { + if (new Date() > res.data.term!.deadline!) + return res.status(400).json({ message: "You can no longer apply!" }); + + next(); + } catch (err) { + next(err); + } +}; + +export default isBeforeDeadline; diff --git a/src/models/TermSchema.ts b/src/models/TermSchema.ts index a71858c1..dff71706 100644 --- a/src/models/TermSchema.ts +++ b/src/models/TermSchema.ts @@ -1,4 +1,4 @@ -import { Document, Schema, model } from "mongoose"; +import { Document, model, Schema } from "mongoose"; export enum MemberState { Accepted = "ACCEPTED", @@ -8,7 +8,7 @@ export enum MemberState { export enum CardState { Created = "CREATED", - Printed = "PRINTD", + Printed = "PRINTED", Given = "GIVEN", } diff --git a/src/routes/files.ts b/src/routes/files.ts index 92d6093f..29e25ddb 100644 --- a/src/routes/files.ts +++ b/src/routes/files.ts @@ -1,21 +1,21 @@ import { Application } from "express"; +import multer from "multer"; +import isAdmin from "../middlewares/auth/isAdmin"; +import isRegistered from "../middlewares/auth/isRegistered"; import createFile from "../middlewares/files/createFile"; -import createdResponse from "../middlewares/utils/createdResponse"; -import getFieldValue from "../middlewares/utils/getFieldValue"; -import getTerm from "../middlewares/term/getTerm"; -import getTermWithQuery from "../middlewares/term/getTermWithQuery"; -import getUser from "../middlewares/user/getUser"; import { imageFilter } from "../middlewares/files/imageFilter"; import { imageStorage } from "../middlewares/files/imageStorage"; -import isAdmin from "../middlewares/auth/isAdmin"; -import isRegistered from "../middlewares/auth/isRegistered"; -import multer from "multer"; import sendFile from "../middlewares/files/sendFile"; import sendUserCard from "../middlewares/files/sendUserCard"; -import setOwnUserId from "../middlewares/user/setOwnUserId"; import updateProfilePicture from "../middlewares/files/updateProfilePicture"; import updateTermCardBg from "../middlewares/files/updateTermCardBg"; +import getTerm from "../middlewares/term/getTerm"; +import getTermWithQuery from "../middlewares/term/getTermWithQuery"; +import getUser from "../middlewares/user/getUser"; +import setOwnUserId from "../middlewares/user/setOwnUserId"; import userIsStaff from "../middlewares/user/userIsStaff"; +import createdResponse from "../middlewares/utils/createdResponse"; +import getFieldValue from "../middlewares/utils/getFieldValue"; const profilePictureUpload = multer({ storage: imageStorage("uploads/profile_pictures/"), @@ -28,6 +28,7 @@ const CardImageUpload = multer({ }); // TODO in Future: OwnTermCardPreview(termId) +// TODO delete file after update const filesRoute = (prefix: string, app: Application): void => { /** @@ -103,7 +104,6 @@ const filesRoute = (prefix: string, app: Application): void => { */ app.get( `${prefix}/staff/:userId/picture`, - isRegistered(), getUser("_id acceptedPicture isStaffMember staffMemberText"), userIsStaff(), getFieldValue("profile", "acceptedPicture"), @@ -119,7 +119,7 @@ const filesRoute = (prefix: string, app: Application): void => { isRegistered(), isAdmin(), getUser("_id acceptedPicture name roomNumber"), - getTerm(true), + getTerm(), sendUserCard() ); diff --git a/src/routes/terms.ts b/src/routes/terms.ts index 8a22bf5a..14f4eef8 100644 --- a/src/routes/terms.ts +++ b/src/routes/terms.ts @@ -1,25 +1,26 @@ import { Application } from "express"; +import isAdmin from "../middlewares/auth/isAdmin"; +import isRegistered from "../middlewares/auth/isRegistered"; +import deleteFile from "../middlewares/files/deleteFile"; import addMember from "../middlewares/term/addMember"; import addTerm from "../middlewares/term/addTerm"; -import createdEmptyResponse from "../middlewares/utils/createdEmptyResponse"; -import createdResponse from "../middlewares/utils/createdResponse"; -import deleteFile from "../middlewares/files/deleteFile"; import deleteTerm from "../middlewares/term/deleteTerm"; -import getFieldValue from "../middlewares/utils/getFieldValue"; import getTerm from "../middlewares/term/getTerm"; import getTermMembers from "../middlewares/term/getTermMembers"; import getTermsList from "../middlewares/term/getTermsList"; -import getUser from "../middlewares/user/getUser"; -import isAdmin from "../middlewares/auth/isAdmin"; +import isBeforeDeadline from "../middlewares/term/isBeforeDeadline"; import isNotMember from "../middlewares/term/isNotMember"; -import isRegistered from "../middlewares/auth/isRegistered"; -import noContentResponse from "../middlewares/utils/noContentResponse"; import responseMembersList from "../middlewares/term/responseMembersList"; import responseTerm from "../middlewares/term/responseTerm"; import responseTermsList from "../middlewares/term/responseTermsList"; -import setOwnUserId from "../middlewares/user/setOwnUserId"; import updateTerm from "../middlewares/term/updateTerm"; import updateTermMember from "../middlewares/term/updateTermMember"; +import getUser from "../middlewares/user/getUser"; +import setOwnUserId from "../middlewares/user/setOwnUserId"; +import createdEmptyResponse from "../middlewares/utils/createdEmptyResponse"; +import createdResponse from "../middlewares/utils/createdResponse"; +import getFieldValue from "../middlewares/utils/getFieldValue"; +import noContentResponse from "../middlewares/utils/noContentResponse"; const termsRoute = (prefix: string, app: Application): void => { /** @@ -56,6 +57,7 @@ const termsRoute = (prefix: string, app: Application): void => { setOwnUserId(), getUser("_id"), getTerm(), + isBeforeDeadline(), isNotMember(), addMember(), createdEmptyResponse() diff --git a/src/routes/users/user.ts b/src/routes/users/user.ts index b54277fd..0bbdab1a 100644 --- a/src/routes/users/user.ts +++ b/src/routes/users/user.ts @@ -154,7 +154,7 @@ const usersRoute = (prefix: string, app: Application): void => { ); /** - * Delete a User + * Delete a User TODO * Role: ADMIN */ app.delete( -- GitLab