From 7cd5a64f200bab4d761e3dbd3e759538e1564030 Mon Sep 17 00:00:00 2001 From: Methapon Metanipat Date: Thu, 10 Oct 2024 10:28:24 +0700 Subject: [PATCH] feat: add view permission --- src/controllers/06-request-list-controller.ts | 20 ++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/src/controllers/06-request-list-controller.ts b/src/controllers/06-request-list-controller.ts index f1b4ac1..56091a0 100644 --- a/src/controllers/06-request-list-controller.ts +++ b/src/controllers/06-request-list-controller.ts @@ -1,6 +1,11 @@ import { Controller, Delete, Get, Path, Put, Query, Request, Route, Security, Tags } from "tsoa"; import { RequestWithUser } from "../interfaces/user"; import prisma from "../db"; +import { Prisma } from "@prisma/client"; +import { createPermCheck, createPermCondition } from "../services/permission"; + +// User in company can see. +const permissionCond = createPermCondition((_) => true); @Route("api/v1/request-list") @Tags("Request List") @@ -12,8 +17,21 @@ export class RequestListController extends Controller { @Query() page: number = 1, @Query() pageSize: number = 30, ) { + const where = { + request: { + quotation: { + customerBranch: { + customer: { + registeredBranch: { OR: permissionCond(req.user) }, + }, + }, + }, + }, + } satisfies Prisma.RequestWorkWhereInput; + const [result, total] = await prisma.$transaction([ prisma.requestWork.findMany({ + where, include: { request: { include: { @@ -32,7 +50,7 @@ export class RequestListController extends Controller { take: pageSize, skip: (page - 1) * pageSize, }), - prisma.requestWork.count(), + prisma.requestWork.count({ where }), ]); return { result, page, pageSize, total };