This commit is contained in:
@@ -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 };
|
||||
}
|
||||
|
||||
@@ -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" })
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user