From 4b790599c22ea1a96f067746ff2c8c49b37510c2 Mon Sep 17 00:00:00 2001 From: OxSaitama Date: Mon, 9 Oct 2023 11:19:51 +0200 Subject: [PATCH] add middleware for requests on customers --- src/app/api/admin/CustomersController.ts | 5 ++-- src/app/api/notary/CustomersController.ts | 5 ++-- .../api/super-admin/CustomersController.ts | 5 ++-- .../CustomerHandler.ts | 28 +++++++++++++++++++ .../AnchoringProofService.ts | 2 +- 5 files changed, 38 insertions(+), 7 deletions(-) create mode 100644 src/app/middlewares/OfficeMembershipHandlers/CustomerHandler.ts diff --git a/src/app/api/admin/CustomersController.ts b/src/app/api/admin/CustomersController.ts index 0094a678..e1badb0d 100644 --- a/src/app/api/admin/CustomersController.ts +++ b/src/app/api/admin/CustomersController.ts @@ -9,6 +9,7 @@ import authHandler from "@App/middlewares/AuthHandler"; import ruleHandler from "@App/middlewares/RulesHandler"; import roleHandler from "@App/middlewares/RolesHandler"; import { Prisma } from "@prisma/client"; +import customerHandler from "@App/middlewares/OfficeMembershipHandlers/CustomerHandler"; @Controller() @Service() @@ -78,7 +79,7 @@ export default class CustomersController extends ApiController { /** * @description Modify a specific customer by uid */ - @Put("/api/v1/admin/customers/:uid", [authHandler, roleHandler, ruleHandler]) + @Put("/api/v1/admin/customers/:uid", [authHandler, roleHandler, ruleHandler, customerHandler]) protected async put(req: Request, response: Response) { try { const uid = req.params["uid"]; @@ -119,7 +120,7 @@ export default class CustomersController extends ApiController { /** * @description Get a specific customer by uid */ - @Get("/api/v1/admin/customers/:uid", [authHandler, roleHandler, ruleHandler]) + @Get("/api/v1/admin/customers/:uid", [authHandler, roleHandler, ruleHandler, customerHandler]) protected async getOneByUid(req: Request, response: Response) { try { const uid = req.params["uid"]; diff --git a/src/app/api/notary/CustomersController.ts b/src/app/api/notary/CustomersController.ts index 1362bb98..4415fd34 100644 --- a/src/app/api/notary/CustomersController.ts +++ b/src/app/api/notary/CustomersController.ts @@ -8,6 +8,7 @@ import { validateOrReject } from "class-validator"; import authHandler from "@App/middlewares/AuthHandler"; import ruleHandler from "@App/middlewares/RulesHandler"; import { Prisma } from "@prisma/client"; +import customerHandler from "@App/middlewares/OfficeMembershipHandlers/CustomerHandler"; @Controller() @Service() @@ -76,7 +77,7 @@ export default class CustomersController extends ApiController { /** * @description Modify a specific customer by uid */ - @Put("/api/v1/notary/customers/:uid", [authHandler, ruleHandler]) + @Put("/api/v1/notary/customers/:uid", [authHandler, ruleHandler, customerHandler]) protected async put(req: Request, response: Response) { try { const uid = req.params["uid"]; @@ -117,7 +118,7 @@ export default class CustomersController extends ApiController { /** * @description Get a specific customer by uid */ - @Get("/api/v1/notary/customers/:uid", [authHandler, ruleHandler]) + @Get("/api/v1/notary/customers/:uid", [authHandler, ruleHandler, customerHandler]) protected async getOneByUid(req: Request, response: Response) { try { const uid = req.params["uid"]; diff --git a/src/app/api/super-admin/CustomersController.ts b/src/app/api/super-admin/CustomersController.ts index 62a82548..628fa4ed 100644 --- a/src/app/api/super-admin/CustomersController.ts +++ b/src/app/api/super-admin/CustomersController.ts @@ -9,6 +9,7 @@ import authHandler from "@App/middlewares/AuthHandler"; import ruleHandler from "@App/middlewares/RulesHandler"; import roleHandler from "@App/middlewares/RolesHandler"; import { Prisma } from "@prisma/client"; +import customerHandler from "@App/middlewares/OfficeMembershipHandlers/CustomerHandler"; @Controller() @Service() @@ -78,7 +79,7 @@ export default class CustomersController extends ApiController { /** * @description Modify a specific customer by uid */ - @Put("/api/v1/super-admin/customers/:uid", [authHandler, roleHandler, ruleHandler]) + @Put("/api/v1/super-admin/customers/:uid", [authHandler, roleHandler, ruleHandler, customerHandler]) protected async put(req: Request, response: Response) { try { const uid = req.params["uid"]; @@ -119,7 +120,7 @@ export default class CustomersController extends ApiController { /** * @description Get a specific customer by uid */ - @Get("/api/v1/super-admin/customers/:uid", [authHandler, roleHandler, ruleHandler]) + @Get("/api/v1/super-admin/customers/:uid", [authHandler, roleHandler, ruleHandler, customerHandler]) protected async getOneByUid(req: Request, response: Response) { try { const uid = req.params["uid"]; diff --git a/src/app/middlewares/OfficeMembershipHandlers/CustomerHandler.ts b/src/app/middlewares/OfficeMembershipHandlers/CustomerHandler.ts new file mode 100644 index 00000000..f0b8b532 --- /dev/null +++ b/src/app/middlewares/OfficeMembershipHandlers/CustomerHandler.ts @@ -0,0 +1,28 @@ +import HttpCodes from "@Common/system/controller-pattern/HttpCodes"; +import { NextFunction, Request, Response } from "express"; +import Container from "typedi"; +import CustomersService from "@Services/super-admin/CustomersService/CustomersService"; + +export default async function customerHandler(req: Request, response: Response, next: NextFunction) { + try { + const officeId = req.body.user.office_Id; + const uid = req.path && req.path.split("/")[5]; + + if (uid) { + const customerService = Container.get(CustomersService); + const customer = await customerService.get({where:{AND: [{uid: uid}, {office_folders: {some: {office_uid: officeId}}}]}}); + + if (!customer[0]) { + response.status(HttpCodes.NOT_FOUND).send("Customer not found"); + return; + } + } + + next(); + + } catch (error) { + console.log(error); + response.status(HttpCodes.INTERNAL_ERROR).send("Internal server error"); + return; + } +} diff --git a/src/services/common/AnchoringProofService/AnchoringProofService.ts b/src/services/common/AnchoringProofService/AnchoringProofService.ts index 6f13103f..2522fa33 100644 --- a/src/services/common/AnchoringProofService/AnchoringProofService.ts +++ b/src/services/common/AnchoringProofService/AnchoringProofService.ts @@ -72,7 +72,7 @@ export default class AnchoringProofService extends BaseService { */ public async generate(data: AnchoringProofData): Promise { const browser = await puppeteer.launch({ - headless: true, + headless: 'new', args: ["--no-sandbox", "--disable-gpu"], }); const page = await browser.newPage();