src/request/request.controller.ts
api/v1/request
Methods |
| create | |||||||||
create(request: AuthRequest, createRequestDto: CreateRequestDto)
|
|||||||||
Decorators :
@UseGuards(undefined)
|
|||||||||
|
Defined in src/request/request.controller.ts:29
|
|||||||||
|
Parameters :
Returns :
any
|
| findAll | |||||||||
findAll(request: AuthRequest, filterFundDTO: FilterRequestDto)
|
|||||||||
Decorators :
@UseGuards(undefined)
|
|||||||||
|
Defined in src/request/request.controller.ts:38
|
|||||||||
|
Parameters :
Returns :
any
|
| Async findOne | ||||||||
findOne(undefined: AuthRequest, id: string)
|
||||||||
Decorators :
@UseGuards(undefined)
|
||||||||
|
Defined in src/request/request.controller.ts:53
|
||||||||
|
Parameters :
Returns :
unknown
|
| update | |||||||||
update(id: string, updateRequestDto: UpdateRequestDto)
|
|||||||||
Decorators :
@UseGuards(new RolesAuthGuard())
|
|||||||||
|
Defined in src/request/request.controller.ts:63
|
|||||||||
|
Parameters :
Returns :
any
|
import {
Body,
Controller,
Get,
Param,
Post,
Put,
Req,
UseGuards,
Query,
UnauthorizedException,
} from "@nestjs/common";
import { AuthGuard } from "@nestjs/passport";
import { CreateRequestDto } from "./dto/create-request.dto";
// eslint-disable-next-line @typescript-eslint/no-unused-vars
import { RequestService } from "./request.service";
import { UpdateRequestDto } from "./dto/update-request.dto";
import { RolesAuthGuard } from "src/auth/guards/roles-auth.guard";
import { AuthRequest } from "src/common/interfaces";
import { FilterRequestDto } from "./dto/filter-requesr.dto";
@Controller("api/v1/request")
export class RequestController {
constructor(private readonly RequestService: RequestService) {}
@UseGuards(AuthGuard("jwt"))
@Post("/")
create(
@Req() request: AuthRequest,
@Body() createRequestDto: CreateRequestDto,
) {
return this.RequestService.create(createRequestDto, request.user.email);
}
@UseGuards(AuthGuard("jwt"))
@Get("/")
findAll(
@Req() request: AuthRequest,
@Query() filterFundDTO: FilterRequestDto,
) {
if (request.user.role === "admin") {
return this.RequestService.findAll(filterFundDTO);
}
return this.RequestService.findAll({
...filterFundDTO,
submitterEmail: request.user.email,
});
}
@UseGuards(AuthGuard("jwt"))
@Get("/:id")
async findOne(@Req() { user }: AuthRequest, @Param("id") id: string) {
const request = await this.RequestService.findOne(id);
if (user.email !== request.submitterEmail && user.role !== "admin") {
throw new UnauthorizedException("Role is not authorized to this request");
}
return request;
}
@UseGuards(new RolesAuthGuard(["admin"]))
@Put("/:id")
update(@Param("id") id: string, @Body() updateRequestDto: UpdateRequestDto) {
return this.RequestService.update(id, updateRequestDto);
}
}