feat: customer permission

This commit is contained in:
Methapon Metanipat 2024-09-09 09:10:41 +07:00
parent 26b21209d4
commit 6926d9367c

View file

@ -78,10 +78,36 @@ function imageLocation(id: string) {
export class CustomerController extends Controller { export class CustomerController extends Controller {
@Get("type-stats") @Get("type-stats")
@Security("keycloak") @Security("keycloak")
async stat() { async stat(@Request() req: RequestWithUser) {
const list = await prisma.customer.groupBy({ const list = await prisma.customer.groupBy({
by: "customerType", by: "customerType",
_count: true, _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,
},
],
},
},
}); });
return list.reduce<Record<CustomerType, number>>( return list.reduce<Record<CustomerType, number>>(
@ -126,12 +152,24 @@ export class CustomerController extends Controller {
? undefined ? undefined
: { : {
OR: [ OR: [
{ user: { some: { userId: req.user.sub } } }, {
user: { some: { userId: req.user.sub } },
},
{ {
branch: globalAllow(req.user) branch: globalAllow(req.user)
? { some: { user: { some: { userId: req.user.sub } } } } ? { some: { user: { some: { userId: req.user.sub } } } }
: undefined, : 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,
},
], ],
}, },
}, },