feat: implement active only condition
This commit is contained in:
parent
57397cc894
commit
9d6fd2d8d0
1 changed files with 25 additions and 9 deletions
|
|
@ -1,4 +1,4 @@
|
|||
import { Prisma } from "@prisma/client";
|
||||
import { Prisma, Status } from "@prisma/client";
|
||||
import prisma from "../db";
|
||||
import HttpError from "../interfaces/http-error";
|
||||
import HttpStatus from "../interfaces/http-status";
|
||||
|
|
@ -18,30 +18,46 @@ export function branchRelationPermInclude(user: RequestWithUser["user"]) {
|
|||
};
|
||||
}
|
||||
|
||||
export function createPermCondition(globalAllow: (user: RequestWithUser["user"]) => boolean) {
|
||||
return (
|
||||
user: RequestWithUser["user"],
|
||||
opts?: { alwaysIncludeHead?: boolean; includeInActive?: boolean },
|
||||
) =>
|
||||
export function createPermCondition(
|
||||
globalAllow: (user: RequestWithUser["user"]) => boolean,
|
||||
): (
|
||||
user: RequestWithUser["user"],
|
||||
opts?: { alwaysIncludeHead?: boolean; activeOnly?: boolean },
|
||||
) => Prisma.BranchWhereInput["OR"] {
|
||||
return (user, opts) =>
|
||||
isSystem(user)
|
||||
? undefined
|
||||
: [
|
||||
{
|
||||
status: opts?.activeOnly ? { not: Status.INACTIVE } : undefined,
|
||||
user: { some: { userId: user.sub } },
|
||||
},
|
||||
{
|
||||
status: opts?.activeOnly ? { not: Status.INACTIVE } : undefined,
|
||||
branch:
|
||||
opts?.alwaysIncludeHead || globalAllow(user)
|
||||
? { some: { user: { some: { userId: user.sub } } } }
|
||||
? {
|
||||
some: { user: { some: { userId: user.sub } } },
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
{
|
||||
headOffice: globalAllow(user)
|
||||
? { branch: { some: { user: { some: { userId: user.sub } } } } }
|
||||
? {
|
||||
status: opts?.activeOnly ? { not: Status.INACTIVE } : undefined,
|
||||
branch: {
|
||||
some: { user: { some: { userId: user.sub } } },
|
||||
},
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
{
|
||||
headOffice: globalAllow(user) ? { user: { some: { userId: user.sub } } } : undefined,
|
||||
headOffice: globalAllow(user)
|
||||
? {
|
||||
status: opts?.activeOnly ? { not: Status.INACTIVE } : undefined,
|
||||
user: { some: { userId: user.sub } },
|
||||
}
|
||||
: undefined,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue