@nestjs/swagger#getSchemaPath TypeScript Examples
The following examples show how to use
@nestjs/swagger#getSchemaPath.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 8 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(User),
},
},
},
description: '200. Success. Returns a user',
})
@ApiNotFoundResponse({
description: '404. NotFoundException. User was not found',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@ApiParam({ name: 'id', type: String })
@Get(':id')
@Serialize(UserResponseDto)
@Auth()
async getById(
@Param('id', ParseObjectIdPipe) id: Types.ObjectId,
): Promise<User> {
const foundUser = await this.usersService.getVerifiedUserById(id);
if (!foundUser) {
throw new NotFoundException('The user does not exist');
}
return foundUser;
}
Example #2
Source File: api-sensor-data.ts From aqualink-app with MIT License | 6 votes |
sensorDataSchema: ApiPropertyOptions = {
type: 'object',
properties: {
[SourceType.SPOTTER]: {
type: 'object',
properties: {
[Metric.BOTTOM_TEMPERATURE]: {
$ref: getSchemaPath(TimeSeriesPoint),
},
[Metric.TOP_TEMPERATURE]: {
$ref: getSchemaPath(TimeSeriesPoint),
},
},
},
[SourceType.HOBO]: {
type: 'object',
properties: {
[Metric.BOTTOM_TEMPERATURE]: {
$ref: getSchemaPath(TimeSeriesPoint),
},
},
},
[SourceType.NOAA]: {
type: 'object',
properties: {
[Metric.SATELLITE_TEMPERATURE]: {
$ref: getSchemaPath(TimeSeriesPoint),
},
},
},
},
}
Example #3
Source File: api-pagination.response.ts From nest-js-quiz-manager with MIT License | 6 votes |
ApiPaginatedResponse = <TModel extends Type<any>>(
options: IPaginatedDecoratorApiResponse,
) => {
return applyDecorators(
ApiExtraModels(PaginatedDto),
ApiOkResponse({
description: options.description || 'Successfully received model list',
schema: {
allOf: [
{ $ref: getSchemaPath(PaginatedDto) },
{
properties: {
items: {
type: 'array',
items: { $ref: getSchemaPath(options.model) },
},
meta: {
type: 'any',
default: {
totalItems: 2,
itemCount: 2,
itemsPerPage: 2,
totalPages: 1,
currentPage: 1,
},
},
},
},
],
},
}),
);
}
Example #4
Source File: api-nested-query.decorator.ts From amplication with Apache License 2.0 | 6 votes |
generateApiQueryObject = (
prop: any,
propType: any,
required: boolean,
isArray: boolean
): ApiQueryOptions => {
if (propType === Number) {
return {
required,
name: prop,
style: "deepObject",
explode: true,
type: "number",
isArray,
};
} else if (propType === String) {
return {
required,
name: prop,
style: "deepObject",
explode: true,
type: "string",
isArray,
};
} else {
return {
required,
name: prop,
style: "deepObject",
explode: true,
type: "object",
isArray,
schema: {
$ref: getSchemaPath(propType),
},
};
}
}
Example #5
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns all users',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@Get()
@UseGuards(JwtAccessGuard)
@Serialize(AllUsersResponseEntity)
async getAllVerifiedUsers(): Promise<UserEntity[] | []> {
const foundUsers = await this.usersService.getVerifiedUsers();
return foundUsers;
}
Example #6
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns a user',
})
@ApiNotFoundResponse({
description: '404. NotFoundException. User was not found',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@ApiParam({ name: 'id', type: String })
@Get(':id')
@UseGuards(JwtAccessGuard)
@Serialize(UserResponseEntity)
async getById(
@Param('id', ParseIntPipe) id: number,
): Promise<UserEntity | never> {
const foundUser = await this.usersService.getVerifiedUserById(id);
if (!foundUser) {
throw new NotFoundException('The user does not exist');
}
return foundUser;
}
Example #7
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: 'Returns 200 if the template has been rendered successfully',
})
@UseGuards(RolesGuard)
@Roles(RolesEnum.admin)
@Get()
@Render('all-users')
public async getAllVerified(@RequestUser() admin: UserEntity): Promise<any> {
const foundUsers = await this.usersService.getAll();
return { admin, users: foundUsers };
}
Example #8
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: 'Returns 200 if the template has been rendered successfully',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: 'Internal Server Error',
})
@UseGuards(IsLoggedGuard)
@Get('/profile')
@Render('profile')
public getProfile(@RequestUser() user: UserEntity): UserEntity {
return user;
}
Example #9
Source File: home.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: 'Returns the logged user',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: 'Returns the unauthorized error',
})
@UseGuards(IsLoggedGuard)
@Get('/')
@Render('home')
public getIndex(@RequestUser() user: UserEntity): UserEntity {
return user;
}
Example #10
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns all users',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@Get()
@UseGuards(JwtAccessGuard)
@Serialize(AllUsersResponseEntity)
async getAllVerifiedUsers(): Promise<UserEntity[] | []> {
const foundUsers = await this.usersService.getVerifiedUsers();
return foundUsers;
}
Example #11
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns a user',
})
@ApiNotFoundResponse({
description: '404. NotFoundException. User was not found',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@ApiParam({ name: 'id', type: String })
@Get(':id')
@UseGuards(JwtAccessGuard)
@Serialize(UserResponseEntity)
async getById(
@Param('id', ParseIntPipe) id: number,
): Promise<UserEntity | never> {
const foundUser = await this.usersService.getVerifiedUserById(id);
if (!foundUser) {
throw new NotFoundException('The user does not exist');
}
return foundUser;
}
Example #12
Source File: api-properties.ts From aqualink-app with MIT License | 6 votes |
ApiUpdateSiteApplicationBody = () => {
return applyDecorators(
ApiBody({
schema: {
type: 'object',
properties: {
site: {
$ref: getSchemaPath(UpdateSiteWithApplicationDto),
},
siteApplication: {
$ref: getSchemaPath(UpdateSiteApplicationDto),
},
},
},
}),
);
}
Example #13
Source File: api-properties.ts From aqualink-app with MIT License | 6 votes |
ApiCreateSiteBody = () => {
return applyDecorators(
ApiBody({
schema: {
type: 'object',
properties: {
site: {
$ref: getSchemaPath(CreateSiteDto),
},
siteApplication: {
$ref: getSchemaPath(CreateSiteApplicationDto),
},
},
},
}),
);
}
Example #14
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(User),
},
},
},
description: 'Returns 200 if the template has been rendered successfully',
})
@UseGuards(RolesGuard)
@Roles(RolesEnum.admin)
@Get()
@Render('all-users')
public async getAllUsers(@RequestUser() admin: User): Promise<any> {
const foundUsers = await this.usersService.getAll();
return { admin, users: foundUsers };
}
Example #15
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(User),
},
},
},
description: 'Returns 200 if the template has been rendered successfully',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: 'Internal Server Error',
})
@UseGuards(IsLoggedGuard)
@Get('/profile')
@Render('profile')
public getProfile(@RequestUser() user: User): User {
return user;
}
Example #16
Source File: home.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiCookieAuth()
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(User),
},
},
},
description: 'Returns the logged user',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: 'Returns the unauthorized error',
})
@UseGuards(IsLoggedGuard)
@Get('/')
@Render('home')
public getIndex(@RequestUser() user: User): User {
return user;
}
Example #17
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 6 votes |
@ApiOkResponse({
description: '200. Success. Returns all users',
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(User),
},
},
},
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@Get()
@Serialize(UsersResponseDto)
@Auth()
async getAllVerifiedUsers() {
const foundUsers = await this.usersService.getVerifiedUsers();
return foundUsers;
}
Example #18
Source File: mailer-auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError ',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<SuccessResponseInterface | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
_id: decodedUser._id,
email: decodedUser.email,
role: decodedUser.role,
};
return ResponseUtils.success(
'tokens',
await this.authService.login(payload),
);
}
Example #19
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError ',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<JwtTokensDto | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
id: decodedUser.id,
email: decodedUser.email,
};
return this.authService.login(payload);
}
Example #20
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiBody({ type: SignInDto })
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: 'Returns jwt tokens',
})
@ApiBadRequestResponse({
schema: {
type: 'object',
example: {
message: [
{
target: {
email: 'string',
password: 'string',
},
value: 'string',
property: 'string',
children: [],
constraints: {},
},
],
error: 'Bad Request',
},
},
description: '400. ValidationException',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@UseGuards(LocalAuthGuard)
@Post('sign-in')
async signIn(@Request() req: ExpressRequest): Promise<JwtTokensDto> {
const { password, ...user } = req.user as UserEntity;
return this.authService.login(user);
}
Example #21
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError ',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<JwtTokensDto | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
_id: decodedUser._id,
email: decodedUser.email,
role: decodedUser.role,
};
return this.authService.login(payload);
}
Example #22
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiBody({ type: SignInDto })
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: 'Returns jwt tokens',
})
@ApiBadRequestResponse({
schema: {
type: 'object',
example: {
message: [
{
target: {
email: 'string',
password: 'string',
},
value: 'string',
property: 'string',
children: [],
constraints: {},
},
],
error: 'Bad Request',
},
},
description: '400. ValidationException',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@UseGuards(LocalAuthGuard)
@Post('sign-in')
async signIn(@Request() req: ExpressRequest): Promise<JwtTokensDto> {
const user = req.user as User;
return this.authService.login(user);
}
Example #23
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<SuccessResponseInterface | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
id: decodedUser.id,
email: decodedUser.email,
};
return ResponseUtils.success(
'tokens',
await this.authService.login(payload),
);
}
Example #24
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiBody({ type: SignInDto })
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: 'Returns jwt tokens',
})
@ApiBadRequestResponse({
schema: {
type: 'object',
example: {
message: [
{
target: {
email: 'string',
password: 'string',
},
value: 'string',
property: 'string',
children: [],
constraints: {},
},
],
error: 'Bad Request',
},
},
description: '400. ValidationException',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@UseGuards(LocalAuthGuard)
@Post('sign-in')
async signIn(@Request() req: ExpressRequest): Promise<SuccessResponseInterface | never> {
const user = req.user as UserEntity;
return ResponseUtils.success(
'tokens',
await this.authService.login(user),
);
}
Example #25
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns all users',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@Get()
@UseGuards(JwtAccessGuard)
@Serialize(AllUsersResponseEntity)
async getAllVerifiedUsers(@Query() query: any) {
const paginationParams: PaginationParamsInterface | false = PaginationUtils.normalizeParams(query.page);
if (!paginationParams) {
throw new BadRequestException('Invalid pagination parameters');
}
const paginatedUsers: PaginatedUsersInterface = await this.usersService.getAllVerifiedWithPagination(paginationParams);
return ResponseUtils.success(
'users',
paginatedUsers.paginatedResult,
{
location: 'users',
paginationParams,
totalCount: paginatedUsers.totalCount,
},
);
}
Example #26
Source File: users.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(UserEntity),
},
},
},
description: '200. Success. Returns a user',
})
@ApiNotFoundResponse({
description: '404. NotFoundException. User was not found',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. UnauthorizedException.',
})
@ApiParam({ name: 'id', type: String })
@Get(':id')
@UseGuards(JwtAccessGuard)
@Serialize(AllUsersResponseEntity)
async getById(
@Param('id', ParseIntPipe) id: number,
): Promise<SuccessResponseInterface> {
const foundUser = await this.usersService.getVerifiedUserById(id);
if (!foundUser) {
throw new NotFoundException('The user does not exist');
}
return ResponseUtils.success(
'users',
foundUser,
);
}
Example #27
Source File: mailer-auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError ',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<SuccessResponseInterface | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
id: decodedUser.id,
email: decodedUser.email,
};
return ResponseUtils.success(
'tokens',
await this.authService.login(payload),
);
}
Example #28
Source File: mailer-auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiBody({ type: SignInDto })
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: 'Returns jwt tokens',
})
@ApiBadRequestResponse({
schema: {
type: 'object',
example: {
message: [
{
target: {
email: 'string',
password: 'string',
},
value: 'string',
property: 'string',
children: [],
constraints: {},
},
],
error: 'Bad Request',
},
},
description: '400. ValidationException',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@HttpCode(HttpStatus.OK)
@UseGuards(LocalAuthGuard)
@Post('sign-in')
async signIn(@Request() req: ExpressRequest): Promise<SuccessResponseInterface | never> {
const { password, ...user } = req.user as UserEntity;
return ResponseUtils.success(
'tokens',
await this.authService.login(user),
);
}
Example #29
Source File: auth.controller.ts From nest-js-boilerplate with MIT License | 5 votes |
@ApiOkResponse({
schema: {
type: 'object',
properties: {
data: {
$ref: getSchemaPath(JwtTokensDto),
},
},
},
description: '200, returns new jwt tokens',
})
@ApiUnauthorizedResponse({
schema: {
type: 'object',
example: {
message: 'string',
},
},
description: '401. Token has been expired',
})
@ApiInternalServerErrorResponse({
schema: {
type: 'object',
example: {
message: 'string',
details: {},
},
},
description: '500. InternalServerError',
})
@ApiBearerAuth()
@Post('refresh-token')
async refreshToken(
@Body() refreshTokenDto: RefreshTokenDto,
): Promise<SuccessResponseInterface | never> {
const decodedUser = this.jwtService.decode(
refreshTokenDto.refreshToken,
) as DecodedUser;
if (!decodedUser) {
throw new ForbiddenException('Incorrect token');
}
const oldRefreshToken:
| string
| null = await this.authService.getRefreshTokenByEmail(decodedUser.email);
// if the old refresh token is not equal to request refresh token then this user is unauthorized
if (!oldRefreshToken || oldRefreshToken !== refreshTokenDto.refreshToken) {
throw new UnauthorizedException(
'Authentication credentials were missing or incorrect',
);
}
const payload = {
id: decodedUser.id,
email: decodedUser.email,
};
return ResponseUtils.success(
'tokens',
await this.authService.login(payload),
);
}