diff --git a/src/modules/tickets/providers/tickets.service.ts b/src/modules/tickets/providers/tickets.service.ts index f124f82..0d4b9ed 100755 --- a/src/modules/tickets/providers/tickets.service.ts +++ b/src/modules/tickets/providers/tickets.service.ts @@ -33,6 +33,7 @@ import { TicketStatus } from "../enums/ticket-status.enum"; import { TicketCategoryRepository } from "../repositories/tickets-category.repository"; import { TicketMessagesRepository } from "../repositories/tickets-message.repository"; import { TicketsRepository } from "../repositories/tickets.repository"; +import { PermissionEnum } from "../../users/enums/permission.enum"; @Injectable() export class TicketsService implements OnModuleInit { @@ -326,10 +327,10 @@ export class TicketsService implements OnModuleInit { return { tickets, count, paginate: true }; } //******************************** */ - async getTicketForAdmin(queryDto: SearchTicketQueryDto, adminId: string) { - const isSuperAdmin = await this.usersService.isSuperAdmin(adminId); + async getTicketForAdmin(queryDto: SearchTicketQueryDto, adminPermissions: PermissionEnum[],adminId: string) { + const canSeeAllTickets = adminPermissions.includes(PermissionEnum.TICKETS_READ); - const [tickets, count] = await this.ticketsRepository.findTicketsListForAdmin(queryDto, adminId, isSuperAdmin); + const [tickets, count] = await this.ticketsRepository.findTicketsListForAdmin(queryDto, adminId, canSeeAllTickets); return { tickets, count, paginate: true }; } diff --git a/src/modules/tickets/tickets.controller.ts b/src/modules/tickets/tickets.controller.ts index f753e73..ca906f2 100755 --- a/src/modules/tickets/tickets.controller.ts +++ b/src/modules/tickets/tickets.controller.ts @@ -15,6 +15,7 @@ import { PermissionsDec } from "../../common/decorators/permission.decorator"; import { IUserIpAndHeaders, UserDec, UserIpAndHeaders } from "../../common/decorators/user.decorator"; import { ParamDto } from "../../common/DTO/param.dto"; import { PermissionEnum } from "../users/enums/permission.enum"; +import { ITokenPayload } from "../auth/interfaces/IToken-payload"; @Controller("tickets") @ApiTags("Tickets") @AuthGuards() @@ -88,10 +89,9 @@ export class TicketsController { @ApiOperation({ summary: "Get all tickets ==> admin route" }) @AdminRoute() - @PermissionsDec(PermissionEnum.TICKETS_READ) @Get("admin") - getAllTickets(@Query() queryDto: SearchTicketQueryDto, @UserDec("id") adminId: string) { - return this.ticketsService.getTicketForAdmin(queryDto, adminId); + getAllTickets(@Query() queryDto: SearchTicketQueryDto, @UserDec() admin: ITokenPayload) { + return this.ticketsService.getTicketForAdmin(queryDto, admin.permissions, admin.id); } @ApiOperation({ summary: "create ticket messages" }) diff --git a/src/modules/users/providers/users.service.ts b/src/modules/users/providers/users.service.ts index d62c2fb..fe4a55e 100755 --- a/src/modules/users/providers/users.service.ts +++ b/src/modules/users/providers/users.service.ts @@ -359,6 +359,7 @@ export class UsersService { async isSuperAdmin(adminId: string) { const user = await this.userRepository.findOne({ where: { id: adminId }, relations: { roles: true } }); if (!user) throw new BadRequestException(UserMessage.USER_NOT_FOUND); + console.log("user.roles", user.roles.map((role) => role.name)); return user.roles.some((role) => role.name === RoleEnum.SUPER_ADMIN); }