refactor: use helper function instead for easier fix

This commit is contained in:
Methapon Metanipat 2024-09-10 13:23:03 +07:00
parent f79650a9bd
commit 06919a0205
4 changed files with 77 additions and 385 deletions

View file

@ -19,7 +19,11 @@ import minio, { deleteFolder } from "../services/minio";
import HttpStatus from "../interfaces/http-status";
import HttpError from "../interfaces/http-error";
import { isSystem } from "../utils/keycloak";
import { branchRelationPermInclude, createPermCheck } from "../services/permission";
import {
branchRelationPermInclude,
createPermCheck,
createPermCondition,
} from "../services/permission";
import { filterStatus } from "../services/prisma";
import { fileLocation, listFile } from "../utils/minio";
@ -43,6 +47,7 @@ function globalAllow(user: RequestWithUser["user"]) {
return allowList.some((v) => user.roles?.includes(v));
}
const permissionCond = createPermCondition(globalAllow);
const permissionCheck = createPermCheck(globalAllow);
export type CustomerCreate = {
@ -85,30 +90,7 @@ export class CustomerController extends Controller {
by: "customerType",
_count: true,
where: {
registeredBranch: isSystem(req.user)
? undefined
: {
OR: [
{
user: { some: { userId: req.user.sub } },
},
{
branch: globalAllow(req.user)
? { some: { user: { some: { userId: req.user.sub } } } }
: undefined,
},
{
headOffice: globalAllow(req.user)
? { branch: { some: { user: { some: { userId: req.user.sub } } } } }
: undefined,
},
{
headOffice: globalAllow(req.user)
? { user: { some: { userId: req.user.sub } } }
: undefined,
},
],
},
registeredBranch: isSystem(req.user) ? undefined : { OR: permissionCond(req.user) },
},
});
@ -144,30 +126,7 @@ export class CustomerController extends Controller {
AND: {
customerType,
...filterStatus(status),
registeredBranch: isSystem(req.user)
? undefined
: {
OR: [
{
user: { some: { userId: req.user.sub } },
},
{
branch: globalAllow(req.user)
? { some: { user: { some: { userId: req.user.sub } } } }
: undefined,
},
{
headOffice: globalAllow(req.user)
? { branch: { some: { user: { some: { userId: req.user.sub } } } } }
: undefined,
},
{
headOffice: globalAllow(req.user)
? { user: { some: { userId: req.user.sub } } }
: undefined,
},
],
},
registeredBranch: isSystem(req.user) ? undefined : { OR: permissionCond(req.user) },
},
} satisfies Prisma.CustomerWhereInput;