init to partner module

This commit is contained in:
2026-04-13 15:47:59 +03:30
parent 388aa25de4
commit 59da9585c4
21 changed files with 553 additions and 12 deletions
+49
View File
@@ -0,0 +1,49 @@
// src/common/guards/permissions.guard.ts
import { ITokenPayload } from '@/modules/auth/auth.utils'
import { PrismaService } from '@/prisma/prisma.service'
import {
ExecutionContext,
ForbiddenException,
Injectable,
UnauthorizedException,
} from '@nestjs/common'
import { Request as ExpressRequest } from 'express'
@Injectable()
export class PartnerGuard {
constructor(private prisma: PrismaService) {}
async canActivate(
tokenPayload: ITokenPayload,
context: ExecutionContext,
): Promise<boolean> {
if (!tokenPayload || tokenPayload.type !== 'PARTNER') {
throw new UnauthorizedException()
}
const partner = await this.prisma.partner.findFirst({
where: {
partner_accounts: {
some: {
id: tokenPayload.account_id,
},
},
},
select: {
partner_accounts: {
select: {
role: true,
},
},
},
})
if (!partner) {
throw new ForbiddenException('شما دسترسی لازم را ندارید.')
}
const req = context.switchToHttp().getRequest<ExpressRequest>()
return true
}
}