issue #37
All checks were successful
Test CI / build (push) Successful in 16s

- 기능 구현 1차 완료(동작 확인 필요)
This commit is contained in:
geonhee-min
2025-12-02 16:50:24 +09:00
parent eec883ac32
commit af3fa26f3b
24 changed files with 519 additions and 97 deletions

View File

@@ -3,4 +3,19 @@ import * as z from 'zod';
export const ResetPasswordSchema = z.object({
email: z
.email()
, code: z
.string()
.length(8)
.regex(/^[a-z](?=.*[0-9])(?=.*[!@#$%^]).*$/, "영소문자로 시작하고 숫자와 특수문자(!@#$%^)를 포함해야 합니다.")
, password: z
.string()
.min(8, "비밀번호는 8-12 자리여야 합니다.")
.max(12, "비밀번호는 8-12 자리여야 합니다.")
.regex(/^[a-z](?=.*[0-9])(?=.*[!@#$%^]).*$/, "영소문자로 시작하고 숫자와 특수문자(!@#$%^)를 포함해야 합니다.")
, passwordConfirm: z
.string()
})
.refine((data) => data.password === data.passwordConfirm, {
path: ["passwordConfirm"],
error: "비밀번호가 일치하지 않습니다."
});

View File

@@ -11,7 +11,7 @@ export const SignUpSchema = z.object({
.string()
.min(8, "비밀번호는 8-12 자리여야 합니다.")
.max(12, "비밀번호는 8-12 자리여야 합니다.")
.regex(/^[a-z](?=.*[0-9])(?=.*[!@#$]).*$/, "영소문자로 시작하고 숫자와 특수문자(!@#$)를 포함해야 합니다.")
.regex(/^[a-z](?=.*[0-9])(?=.*[!@#$%^]).*$/, "영소문자로 시작하고 숫자와 특수문자(!@#$%^)를 포함해야 합니다.")
, name: z
.string()
.min(1, "이름을 입력해주시십시오.")

View File

@@ -0,0 +1,4 @@
export class ResetPasswordRequest {
email!: string;
password!: string;
}

View File

@@ -0,0 +1,3 @@
export class SendResetPasswordCodeRequest {
email!: string;
}

View File

@@ -0,0 +1,4 @@
export class VerifyResetPasswordCodeRequest {
email!: string;
code!: string;
}

View File

@@ -2,4 +2,7 @@ export * from './account/CheckDuplicationRequest';
export * from './account/SendVerificationCodeRequest';
export * from './account/VerifyCodeRequest';
export * from './account/SignupRequest';
export * from './account/LoginRequest';
export * from './account/LoginRequest';
export * from './account/SendResetPasswordCodeRequest';
export * from './account/VerifyResetPasswordCodeRequest';
export * from './account/ResetPasswordRequest';

View File

@@ -1,4 +1,5 @@
export class BaseResponse {
success!: boolean;
message?: string;
error?: string;
}

View File

@@ -1,7 +1,6 @@
import { BaseResponse } from "../BaseResponse";
export class LoginResponse extends BaseResponse {
success!: boolean;
accessToken?: string;
refreshToken?: string;
}

View File

@@ -0,0 +1,5 @@
import { BaseResponse } from "../BaseResponse";
export class ResetPasswordResponse extends BaseResponse {
}

View File

@@ -0,0 +1,5 @@
import { BaseResponse } from "../BaseResponse";
export class SendResetPasswordCodeResponse extends BaseResponse {
}

View File

@@ -1,5 +1,5 @@
import { BaseResponse } from "../BaseResponse";
export class SendVerificationCodeResponse extends BaseResponse {
success!: boolean;
}

View File

@@ -1,6 +1,5 @@
import { BaseResponse } from "../BaseResponse";
export class SignupResponse extends BaseResponse {
success!: boolean;
}

View File

@@ -0,0 +1,5 @@
import { BaseResponse } from "../BaseResponse";
export class VerifyResetPasswordCodeResponse extends BaseResponse {
verified!: boolean;
}

View File

@@ -2,4 +2,7 @@ export * from './account/CheckDuplicationResponse';
export * from './account/SendVerificationCodeResponse';
export * from './account/VerifyCodeResponse';
export * from './account/SignupResponse';
export * from './account/LoginResponse';
export * from './account/LoginResponse';
export * from './account/SendResetPasswordCodeResponse';
export * from './account/VerifyResetPasswordCodeResponse';
export * from './account/ResetPasswordResponse';