diff --git a/docsfera.json b/docsfera.json index e067c21..a0952d7 100644 --- a/docsfera.json +++ b/docsfera.json @@ -121,7 +121,7 @@ "content": { "application/json": { "schema": { - "type": "object" + "$ref": "#/components/schemas/AuthRefreshAccessTokenRes" } } } @@ -998,10 +998,14 @@ "operationId": "TermsOfUseController_getToken", "parameters": [ { - "name": "Dadosfera-Lang", - "required": true, + "name": "dadosfera-lang", "in": "header", + "required": false, "schema": { + "enum": [ + "pt-br", + "en-us" + ], "type": "string" } } @@ -1026,7 +1030,20 @@ "/terms-of-use/accept": { "post": { "operationId": "TermsOfUseController_accept", - "parameters": [], + "parameters": [ + { + "name": "dadosfera-lang", + "in": "header", + "required": false, + "schema": { + "enum": [ + "pt-br", + "en-us" + ], + "type": "string" + } + } + ], "responses": { "200": { "description": "", @@ -1222,7 +1239,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1260,7 +1276,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1313,7 +1328,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1356,7 +1370,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1399,7 +1412,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1442,7 +1454,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1488,7 +1499,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1537,7 +1547,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1598,7 +1607,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1651,7 +1659,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1702,7 +1709,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1759,7 +1765,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1812,7 +1817,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1865,7 +1869,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1926,7 +1929,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -1998,7 +2000,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2051,7 +2052,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2102,7 +2102,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2153,7 +2152,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2206,7 +2204,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2259,7 +2256,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2308,7 +2304,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -2357,7 +2352,6 @@ { "name": "dadosfera-lang", "in": "header", - "description": "Defaults to pt-br", "required": false, "schema": { "enum": [ @@ -4844,6 +4838,24 @@ "customerName" ] }, + "AuthRefreshAccessTokenRes": { + "type": "object", + "properties": { + "permissions": { + "type": "array", + "items": { + "type": "string" + } + }, + "accessToken": { + "type": "string" + } + }, + "required": [ + "permissions", + "accessToken" + ] + }, "CreateConnectorDto": { "type": "object", "properties": { diff --git a/src/modules/auth/auth.controller.ts b/src/modules/auth/auth.controller.ts index 2932216..4417a3e 100644 --- a/src/modules/auth/auth.controller.ts +++ b/src/modules/auth/auth.controller.ts @@ -13,7 +13,12 @@ import { Req, Param, } from '@nestjs/common'; -import { ApiHeaders, ApiSecurity, ApiTags } from '@nestjs/swagger'; +import { + ApiHeaders, + ApiOkResponse, + ApiSecurity, + ApiTags, +} from '@nestjs/swagger'; import { AuthChangePasswordRequest, AuthResetPasswordRequest, @@ -35,6 +40,7 @@ import { GrpcToHttpExceptionFilter } from '../../error/grpc-to-http-exception.fi import { RequestUser, User } from 'src/decorators/user.decorator'; import { AuthRefreshAccessTokenReq, + AuthRefreshAccessTokenRes, AuthSignInReq, AuthSignInRes, } from './dtos/login'; @@ -101,6 +107,7 @@ export class AuthController { @Post('refresh-access-token') @HttpCode(HttpStatus.OK) + @ApiOkResponse({ type: AuthRefreshAccessTokenRes }) async refreshAccessToken( @Body() body: AuthRefreshAccessTokenReq, @Language() language: LanguageEnum, diff --git a/src/modules/auth/dtos/login.ts b/src/modules/auth/dtos/login.ts index 981ac6c..eae2b64 100644 --- a/src/modules/auth/dtos/login.ts +++ b/src/modules/auth/dtos/login.ts @@ -109,3 +109,9 @@ export class AuthRefreshAccessTokenReq { @ApiProperty() customerName: string; } +export class AuthRefreshAccessTokenRes { + @ApiProperty() + permissions: string[]; + @ApiProperty() + accessToken: string; +} diff --git a/src/modules/permissions/permissions.service.ts b/src/modules/permissions/permissions.service.ts index f5a03a1..fefb723 100644 --- a/src/modules/permissions/permissions.service.ts +++ b/src/modules/permissions/permissions.service.ts @@ -63,7 +63,7 @@ export class PermissionsService (process.env.LOCAL_ENV === 'true' || process.env.ENV === 'local') ) { return this.logger.info( - "couldn't connect to DUC. suppresing in local env", + "couldn't connect to DUC. suppressing in local env", ); } diff --git a/src/utils/ErrorBuilder.ts b/src/utils/ErrorBuilder.ts index faf2b7c..88570e9 100644 --- a/src/utils/ErrorBuilder.ts +++ b/src/utils/ErrorBuilder.ts @@ -119,6 +119,14 @@ export function EnrichErrorCode(code: string) { code, }; + case ErrorCodes.AUTH.INVALID_REFRESH_TOKEN: + return { + statusCode: HttpStatus.UNAUTHORIZED, + error: 'Acesso expirado!', + message: 'Seu acesso expirou, favor fazer login novamente.', + code, + }; + case ErrorCodes.AUTH.FORBIDDEN: return { statusCode: HttpStatus.FORBIDDEN, diff --git a/src/utils/errorCodes.ts b/src/utils/errorCodes.ts index 871f006..3edb29f 100644 --- a/src/utils/errorCodes.ts +++ b/src/utils/errorCodes.ts @@ -1,5 +1,6 @@ export const AUTH = { UNAUTHORIZED: 'AUTH.UNAUTHORIZED', + INVALID_REFRESH_TOKEN: 'AUTH.INVALID_REFRESH_TOKEN', FORBIDDEN: 'AUTH.FORBIDDEN', WRONG_CREDENTIALS: 'AUTH.WRONG_CREDENTIALS', WRONG_PASSWORD_CONFIRMATION: 'AUTH.WRONG_PASSWORD_CONFIRMATION',