From 22dca614e7aa5634618b194310ed4f7e3c12a3df Mon Sep 17 00:00:00 2001 From: Stefan-5422 <32109571+Stefan-5422@users.noreply.github.com> Date: Tue, 14 Jun 2022 19:28:41 +0000 Subject: [PATCH] =?UTF-8?q?E=CC=B5=CD=92=CC=83=CD=92=CD=91=CC=93=CD=85?= =?UTF-8?q?=CC=AF=CD=8E=CD=96=CC=AB=CC=99=CC=A9=CC=A3=CD=88=CD=96=CC=B2?= =?UTF-8?q?=CC=9C=CC=A0=CC=AD=CC=9Fv=CC=B8=CC=83=CD=86=CC=91=CC=93=CC=8F?= =?UTF-8?q?=CC=82=CD=84=CD=8C=CD=87=CD=9C=CD=93=CD=93=CD=9C=CD=9A=CC=AC?= =?UTF-8?q?=CC=B9=CC=9F=CD=88=CC=B0=CC=A4=CD=88=CD=87e=CC=B7=CC=89=CC=A9?= =?UTF-8?q?=CC=BA=CD=89=CC=B1=CD=94=CD=8D=CC=B9=CC=99=CC=9D=CC=B1r=CC=B8?= =?UTF-8?q?=CD=8A=CC=93=CC=8D=CC=8C=CC=8F=CC=ACy=CC=B5=CD=84=CC=8B=CC=BF?= =?UTF-8?q?=CC=95=CC=82=CC=BE=CD=8B=CD=8A=CD=98=CC=81=CD=8C=CC=B3=CC=A7?= =?UTF-8?q?=CC=9F=CC=AD=CC=A4=CC=99=CC=BC=CD=8E=CC=AE=CC=B1=CC=9Eo=CC=B5?= =?UTF-8?q?=CD=82=CC=BE=CC=84=CC=8D=CC=94=CC=81=CC=82=CD=80=CC=9C=CC=B2?= =?UTF-8?q?=CC=B1=CD=89=CC=AD=CC=B3n=CC=B6=CD=98=CC=BE=CD=91=CD=90=CC=81?= =?UTF-8?q?=CC=BB=CC=A0=CD=88e=CC=B6=CC=84=CC=91=CC=93=CC=8B=CC=81=CD=A0?= =?UTF-8?q?=CC=8A=CC=BE=CC=8D=CD=81=CC=95=CD=86=CC=BE=CD=91=CC=8A=CD=99?= =?UTF-8?q?=CC=97=CC=97=CC=BB=CC=A4=CD=87=CC=A7=CC=AD=CC=A5=20=CC=B8=CD=92?= =?UTF-8?q?=CC=9B=CD=91=CD=80=CC=BE=CD=97=CC=BE=CD=84=CD=90=CD=84=CC=89?= =?UTF-8?q?=CC=8D=CC=BE=CC=8B=CC=90=CC=BB=CC=A9=CC=AB=CD=94=CD=95=CC=A4?= =?UTF-8?q?=CC=B0=CD=9Ai=CC=B4=CC=80=CD=82=CD=8A=CD=90=CD=80=CC=95=CC=9B?= =?UTF-8?q?=CC=86=CC=B2s=CC=B8=CC=80=CD=82=CD=86=CC=82=CC=A8=CD=9A=CC=B2?= =?UTF-8?q?=CC=9E=CC=BA=CC=96=CC=BA=CC=9E=CD=9A=CC=B1=CD=9A=CC=98=20=CC=B7?= =?UTF-8?q?=CD=98=CC=BD=CD=84=CD=97=CD=87f=CC=B4=CD=82=CD=A0=CC=BE=CC=82?= =?UTF-8?q?=CD=83=CD=86=CC=81=CD=92=CC=8B=CD=9B=CC=98=CC=B0=CC=A0i=CC=B6?= =?UTF-8?q?=CC=9A=CD=83=CD=9D=CC=89=CC=8B=CC=9A=CD=90=CC=8A=CC=87=CD=8E?= =?UTF-8?q?=CD=93=CD=8D=CC=A6=CD=88=CC=9E=CD=99=CC=A3=CD=95=CD=95=CD=9A?= =?UTF-8?q?=CC=96=CC=B3n=CC=B5=CC=93=CC=8D=CC=A5=CC=A7=CD=9A=CD=85=CD=9C?= =?UTF-8?q?=CD=88=CD=95e=CC=B5=CD=8C=CC=86=CC=81=CC=8A=CD=9D=CC=94=CC=8E?= =?UTF-8?q?=CD=98=CD=91=CC=87=CC=BE=CD=86=CD=9D=CC=A5=CC=B3=CC=B9=CD=96?= =?UTF-8?q?=CC=AE=CD=85=CC=B0=CD=88=CD=95=CD=99=20n=CC=B6=CC=9A=CC=95?= =?UTF-8?q?=CD=A0=CC=91=CD=8A=CC=A5o=CC=B7=CC=90=CC=95=CC=8A=CD=83=CC=8B?= =?UTF-8?q?=CD=87=CC=97=CC=9E=CC=A6=CD=9At=CC=B6=CC=8E=CC=A6=CC=9C=CD=89?= =?UTF-8?q?=CD=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- prisma/schema.prisma | 25 +++++++++---------------- src/controller/auth.controller.ts | 13 +++---------- src/controller/orders.controller.ts | 20 +++++++++++++++++++- src/lib/mail.ts | 8 ++++++-- 4 files changed, 37 insertions(+), 29 deletions(-) diff --git a/prisma/schema.prisma b/prisma/schema.prisma index 3bb20cd..a090925 100644 --- a/prisma/schema.prisma +++ b/prisma/schema.prisma @@ -30,28 +30,20 @@ model Restaurant { } model Pizza { - id Int @id @default(autoincrement()) - name String + id Int @id @default(autoincrement()) + name String description String? price Decimal - restaurant Restaurant @relation(fields: [restaurantId], references: [id]) + restaurant Restaurant @relation(fields: [restaurantId], references: [id]) restaurantId Int - orders PizzaToOrder[] + orders Order[] } model Order { - id Int @id @default(autoincrement()) - user User @relation(fields: [userId], references: [id]) + id Int @id @default(autoincrement()) + user User @relation(fields: [userId], references: [id]) userId Int - pizzas PizzaToOrder[] -} - -model PizzaToOrder { - id Int @id @default(autoincrement()) - order Order @relation(fields: [orderId], references: [id]) - orderId Int - pizza Pizza @relation(fields: [pizzaId], references: [id]) - pizzaId Int + pizzas Pizza[] } model Organization { @@ -65,8 +57,9 @@ enum Role { USER ADMIN } + enum Status { UNVERIFIED VERIFIED ENABLED -} \ No newline at end of file +} diff --git a/src/controller/auth.controller.ts b/src/controller/auth.controller.ts index baa636f..75ea9a6 100644 --- a/src/controller/auth.controller.ts +++ b/src/controller/auth.controller.ts @@ -28,14 +28,7 @@ const ROLES: readonly string[] = [Role.ADMIN, Role.USER]; export const register = async (req: Request, res: Response) => { const { name, password, role, organization } = req.body || {}; - if ( - !( - typeof name === "string" && - typeof password === "string" && - ROLES.includes(role) && - typeof organization === "number" - ) - ) { + if (!(typeof name === "string" && typeof password === "string" && typeof organization === "number")) { return res.status(400).json( createDefaultError("Request body does not match required parameters", { name: "string", @@ -53,7 +46,7 @@ export const register = async (req: Request, res: Response) => { return res.status(404).json(createDefaultError(`Could not find organization with id ${organization}`, {})); } - if (role ? ("USER" as Role) === Role.ADMIN : Role) { + if ((role ?? ("USER" as Role)) === Role.ADMIN) { if (req.auth?.role !== Role.ADMIN) { return res.status(401).json(createDefaultError(`Unauthorized`, {})); } @@ -65,7 +58,7 @@ export const register = async (req: Request, res: Response) => { passwordSalt: "salty", passwordHash: hash, role: role as Role, - status: role === Role.ADMIN ? Status.UNVERIFIED : Status.ENABLED, + status: role === Role.ADMIN ? Status.ENABLED : Status.ENABLED, organization: { connect: { id: organization } || undefined }, }, select: { diff --git a/src/controller/orders.controller.ts b/src/controller/orders.controller.ts index 12b4a39..b096bd6 100644 --- a/src/controller/orders.controller.ts +++ b/src/controller/orders.controller.ts @@ -29,8 +29,13 @@ export const addOrder = async (req: Request, res: Response) => { connect: pizzas, }, }, + select: { + pizzas: true, + }, }); + console.log(order); + res.status(HttpStatusCodes.CREATED).json(order); }; @@ -93,13 +98,26 @@ export const getOrder = async (req: Request, res: Response) => { where: { id: id, }, + select: { + id: true, + pizzas: true, + user: true, + userId: true, + }, }); res.status(HttpStatusCodes.OK).json(order); }; export const getOrders = async (_req: Request, res: Response) => { - const orders = await prisma.order.findMany(); + const orders = await prisma.order.findMany({ + select: { + id: true, + pizzas: true, + user: true, + userId: true, + }, + }); res.status(HttpStatusCodes.OK).json(orders); }; diff --git a/src/lib/mail.ts b/src/lib/mail.ts index 0a3d5c1..470113b 100644 --- a/src/lib/mail.ts +++ b/src/lib/mail.ts @@ -12,7 +12,11 @@ export let mailAccount = { let transporter = process.env.DEV == "true" || process.env.DOMAIN == undefined ? (async () => { - mailAccount = await nodemailer.createTestAccount(); + //mailAccount = await nodemailer.createTestAccount(); + mailAccount = { + user: "m3v2a6gnc4dunaxu@ethereal.email", + pass: "24yk6juHY8PzftcGTa", + }; //mailAccount = { // user: "", // pass: "", @@ -64,7 +68,7 @@ export const verificationMail = async (to: string, id: string) => { //TODO: Replace other handlebars with final values const message = Handlebars.compile(raw); - const data = {}; + const data = { link: id }; const compiled = message(data); sendMail(mailAccount.user, to, "Verify Email", undefined, compiled);