diff --git a/src/auth/auth.controller.ts b/src/auth/auth.controller.ts index f8cda9c..1f31684 100644 --- a/src/auth/auth.controller.ts +++ b/src/auth/auth.controller.ts @@ -11,15 +11,15 @@ import { ApiUnauthorizedResponse, } from "@nestjs/swagger"; import { Request } from "express"; +import { BadRequestError } from "src/error/bad-request-error"; +import { ConflictError } from "src/error/conflict-error"; +import { ForbiddenError } from "src/error/forbidden-error"; +import { UnauthorizedError } from "src/error/unauthorized-error"; import { CreateUserDto } from "src/user/dto/create-user.dto"; import { LoginUserDto } from "src/user/dto/login-user.dto"; -import { CreateUserBadRequestError } from "src/user/exceptions/create-user-badrequest-error.exception"; -import { CreateUserConflictError } from "src/user/exceptions/create-user-conflict-error.exception"; import { CreateUserResponse } from "src/user/responses/create-user-response"; import { AuthService } from "./auth.service"; -import { ForbiddenError } from "./exception/ForbiddenError"; -import { UnauthorizedError } from "./exception/UnauthorizedError"; import { type JwtUser } from "./jwt/jwt.interface"; import { JwtRefreshGuard } from "./jwt/jwt-refresh.guard"; import { LocalAuthGuard } from "./local/local-auth.guard"; @@ -41,11 +41,11 @@ export class AuthController { }) @ApiConflictResponse({ description: "使用者資料重覆", - type: CreateUserConflictError, + type: ConflictError, }) @ApiBadRequestResponse({ description: "使用者格式不符", - type: CreateUserBadRequestError, + type: BadRequestError, }) async register(@Body() userDto: CreateUserDto) { return this.authService.register(userDto); diff --git a/src/auth/responses/generate-token.response.ts b/src/auth/responses/generate-token.response.ts index 441f1a9..c20bc64 100644 --- a/src/auth/responses/generate-token.response.ts +++ b/src/auth/responses/generate-token.response.ts @@ -19,7 +19,7 @@ export class GenerateTokenResponse { @ApiProperty({ description: "HTTP Code", - example: "201", + example: 201, type: "number", }) public readonly statusCode: number; diff --git a/src/error/bad-request-error.ts b/src/error/bad-request-error.ts new file mode 100644 index 0000000..4129cb5 --- /dev/null +++ b/src/error/bad-request-error.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from "@nestjs/swagger"; + +export class BadRequestError { + @ApiProperty({ + description: "HTTP Code", + example: 400, + type: "number", + }) + public readonly statusCode: number; + + @ApiProperty({ + description: "Error Message", + example: ["Error Message"], + type: "array", + }) + public readonly error: string[]; +} diff --git a/src/error/conflict-error.ts b/src/error/conflict-error.ts new file mode 100644 index 0000000..556ba4f --- /dev/null +++ b/src/error/conflict-error.ts @@ -0,0 +1,17 @@ +import { ApiProperty } from "@nestjs/swagger"; + +export class ConflictError { + @ApiProperty({ + description: "HTTP Code", + example: 409, + type: "number", + }) + public readonly statusCode: number; + + @ApiProperty({ + description: "Error Message", + example: ["Error Message"], + type: "array", + }) + public readonly error: string[]; +} diff --git a/src/auth/exception/ForbiddenError.ts b/src/error/forbidden-error.ts similarity index 66% rename from src/auth/exception/ForbiddenError.ts rename to src/error/forbidden-error.ts index 9b8ee08..0b452ab 100644 --- a/src/auth/exception/ForbiddenError.ts +++ b/src/error/forbidden-error.ts @@ -3,15 +3,15 @@ import { ApiProperty } from "@nestjs/swagger"; export class ForbiddenError { @ApiProperty({ description: "HTTP Code", - example: "403", + example: 403, type: "number", }) public readonly statusCode: number; @ApiProperty({ - description: "Error message", - example: "Forbidden", + description: "Error Message", + example: "Error Message", type: "string", }) - public readonly message: string; + public readonly error: string; } diff --git a/src/auth/exception/UnauthorizedError.ts b/src/error/unauthorized-error.ts similarity index 74% rename from src/auth/exception/UnauthorizedError.ts rename to src/error/unauthorized-error.ts index 36ac4c0..578d856 100644 --- a/src/auth/exception/UnauthorizedError.ts +++ b/src/error/unauthorized-error.ts @@ -3,15 +3,15 @@ import { ApiProperty } from "@nestjs/swagger"; export class UnauthorizedError { @ApiProperty({ description: "HTTP Code", - example: "401", + example: 401, type: "number", }) public readonly statusCode: number; @ApiProperty({ - description: "Error message", + description: "Error Message", example: "Unauthorized", type: "string", }) - public readonly message: string; + public readonly error: string; } diff --git a/src/user/exceptions/create-user-badrequest-error.exception.ts b/src/user/exceptions/create-user-badrequest-error.exception.ts deleted file mode 100644 index 0880212..0000000 --- a/src/user/exceptions/create-user-badrequest-error.exception.ts +++ /dev/null @@ -1,55 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class CreateUserBadRequestError { - @ApiProperty({ - description: "HTTP 回應代碼", - example: "400", - type: "number", - }) - public readonly statusCode: number; - - @ApiProperty({ - description: "錯誤訊息", - example: [ - "email 為必填欄位。", - "email 必須是信箱格式。", - "name 為必填欄位。", - "account 為必填欄位。", - "password 為必填欄位。", - "password 必須長度大於等於8個字。", - ], - items: { - properties: { - account: { - description: "account 為必填欄位。 \n", - type: "string", - }, - email: { - // eslint-disable-next-line no-useless-concat - description: "email 為必填欄位。 \n" + "email 必須是信箱格式。 \n", - type: "string", - }, - name: { - description: "name 為必填欄位。 \n", - type: "string", - }, - password: { - // eslint-disable-next-line no-useless-concat - description: - "password 為必填欄位。 \n" + - "password 必須長度大於等於8個字。 \n", - type: "string", - }, - }, - }, - type: "array", - }) - public readonly message: string[]; - - @ApiProperty({ - description: "錯誤狀態碼敘述", - example: "Bad Request", - type: "string", - }) - public readonly error: string; -} diff --git a/src/user/exceptions/create-user-conflict-error.exception.ts b/src/user/exceptions/create-user-conflict-error.exception.ts deleted file mode 100644 index 4302ab4..0000000 --- a/src/user/exceptions/create-user-conflict-error.exception.ts +++ /dev/null @@ -1,36 +0,0 @@ -import { ApiProperty } from "@nestjs/swagger"; - -export class CreateUserConflictError { - @ApiProperty({ - description: "HTTP 回應代碼", - example: "409", - type: "number", - }) - public readonly statusCode: number; - - @ApiProperty({ - description: "錯誤訊息", - example: ["email 已被註冊。", "account 已被註冊。"], - items: { - properties: { - account: { - description: "account 已被註冊。 \n", - type: "string", - }, - email: { - description: "email 已被註冊。 \n", - type: "string", - }, - }, - }, - type: "array", - }) - public readonly message: string[]; - - @ApiProperty({ - description: "錯誤狀態碼敘述", - example: "Conflict", - type: "string", - }) - public readonly error: string; -} diff --git a/src/user/responses/create-user-response.ts b/src/user/responses/create-user-response.ts index 3c8ec35..dbf1516 100644 --- a/src/user/responses/create-user-response.ts +++ b/src/user/responses/create-user-response.ts @@ -3,7 +3,7 @@ import { ApiProperty } from "@nestjs/swagger"; export class CreateUserResponse { @ApiProperty({ description: "HTTP 回應代碼", - example: "201", + example: 201, type: "number", }) public readonly statusCode: number; @@ -11,7 +11,7 @@ export class CreateUserResponse { @ApiProperty({ description: "創建成功回應", example: "創建成功", - type: "number", + type: "string", }) public readonly message: string; }