Skip to content

Commit f916d39

Browse files
committed
fix: 닉네임 관련 유효성 검사 추가
1 parent 824fa55 commit f916d39

File tree

3 files changed

+22
-0
lines changed

3 files changed

+22
-0
lines changed

src/components/Join/JoinButton.tsx

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ interface DialogElement {
1515

1616
const messages = {
1717
NAME_ISVAILD_ERROR: '이름은 두글자 이상 입력 가능합니다.',
18+
NICKNAME_ISVAILD_ERROR: '닉네임은 2 ~ 12자 이상 입력 가능합니다.',
1819
PHONE_ISVAILD_ERROR: '휴대폰 번호를 정확히 입력해주세요.',
1920
PWCHECK_ISVAILD_ERROR: '비밀번호 확인을 진행해주세요.',
2021
EMAIL_PASSWORD_ISVAILD_ERROR: '이메일 또는 비밀번호 형식이 잘못되었습니다.',
@@ -43,6 +44,12 @@ const JoinButton = () => {
4344
return;
4445
}
4546

47+
if (!validator.isValidNickName(nickName)) {
48+
setDialogMessage(messages.NICKNAME_ISVAILD_ERROR);
49+
dialogRef.current?.openModal();
50+
return;
51+
}
52+
4653
if (!FormatPhone(phone)) {
4754
setDialogMessage(messages.PHONE_ISVAILD_ERROR);
4855
dialogRef.current?.openModal();

src/components/Join/NickNameInput.tsx

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
import InputForm from '../common/InputForm.tsx';
22
import { useJoinState } from '../../stores/joinStore.ts';
3+
import { LooseValidation, ValidateProcessor } from '../../utils/authUtils.ts';
34

45
const NickNameInput = () => {
56
const { nickName, nickNameHandler } = useJoinState();
7+
const validator = new ValidateProcessor(new LooseValidation());
68

79
return (
810
<InputForm
@@ -15,6 +17,8 @@ const NickNameInput = () => {
1517
name={'nickName'}
1618
id={'nickName-input'}
1719
aria-label={'join-nickName-input'}
20+
error={!validator.isValidNickName(nickName)}
21+
errorText={'※ 닉네임은 2~12자 이내여야 합니다.'}
1822
/>
1923
);
2024
};

src/utils/authUtils.ts

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
export interface ValidationStrategy {
22
nameValidate(input: string): boolean;
3+
nickNameValidate(input: string): boolean;
34
phoneValidate(input: string): boolean;
45
emailValidate(input: string): boolean;
56
passwordValidate(input: string): boolean;
@@ -10,6 +11,9 @@ export class LooseValidation implements ValidationStrategy {
1011
nameValidate(name: string): boolean {
1112
return name.length >= 2;
1213
}
14+
nickNameValidate(nickName: string): boolean {
15+
return nickName.length >= 2 && nickName.length <= 12;
16+
}
1317
phoneValidate(phone: string): boolean {
1418
return phone.length == 11;
1519
}
@@ -30,6 +34,9 @@ export class StrongValidation implements ValidationStrategy {
3034
nameValidate(name: string): boolean {
3135
return name.length >= 2;
3236
}
37+
nickNameValidate(nickName: string): boolean {
38+
return nickName.length >= 2 && nickName.length <= 12;
39+
}
3340
phoneValidate(phone: string): boolean {
3441
return phone.length == 11;
3542
}
@@ -59,6 +66,10 @@ export class ValidateProcessor {
5966
return this.#validator.nameValidate(name);
6067
}
6168

69+
isValidNickName(nickName: string) {
70+
return this.#validator.nickNameValidate(nickName);
71+
}
72+
6273
isValidPhone(phone: string) {
6374
return this.#validator.phoneValidate(phone);
6475
}

0 commit comments

Comments
 (0)