Skip to content

feat: 로그인 페이지 UI 구현#6

Merged
0630hwi merged 7 commits intodevfrom
feat/login
Jul 24, 2025
Merged

feat: 로그인 페이지 UI 구현#6
0630hwi merged 7 commits intodevfrom
feat/login

Conversation

@myjuniverse
Copy link
Copy Markdown
Contributor

@myjuniverse myjuniverse commented Jul 24, 2025

Summary by CodeRabbit

  • 신규 기능

    • 로그인 페이지와 회원가입 페이지가 추가되었습니다.
    • 로그인 페이지에서 카카오, 구글, 이메일 로그인 버튼과 회원 찾기, 회원가입 이동 버튼이 제공됩니다.
    • 회원가입 페이지에서 이메일, 휴대폰 인증, 이름, 닉네임, 비밀번호 입력 및 이용약관 동의 기능이 제공됩니다.
  • 버그 수정

    • 헤더의 "로그인" 링크가 정상적으로 동작하도록 수정되었습니다.
  • 스타일

    • 헤더 로고가 SVG에서 이미지 파일로 변경되고, 스타일이 개선되었습니다.
    • 로그인 및 회원가입 페이지에 일관된 스타일이 적용되었습니다.
  • 기타

    • 파비콘과 페이지 제목이 업데이트되었습니다.
    • 코드의 들여쓰기가 정리되어 가독성이 향상되었습니다.

@myjuniverse myjuniverse self-assigned this Jul 24, 2025
@coderabbitai
Copy link
Copy Markdown

coderabbitai bot commented Jul 24, 2025

Warning

Rate limit exceeded

@myjuniverse has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 11 minutes and 5 seconds before requesting another review.

⌛ How to resolve this issue?

After the wait time has elapsed, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

We recommend that you space out your commits to avoid hitting the rate limit.

🚦 How do rate limits work?

CodeRabbit enforces hourly rate limits for each developer per organization.

Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout.

Please see our FAQ for further information.

📥 Commits

Reviewing files that changed from the base of the PR and between 40a5ef6 and 8d26f3f.

📒 Files selected for processing (1)
  • src/views/LoginPage.vue (1 hunks)

"""

Walkthrough

이 변경사항은 로그인 및 회원가입 페이지를 새로 추가하고, 라우터 설정에 해당 경로를 등록합니다. 헤더의 로고와 로그인 링크가 개선되었으며, favicon과 페이지 타이틀이 업데이트되었습니다. App.vue의 들여쓰기만 수정되었습니다.

Changes

파일/경로 변경 요약
index.html favicon을 SVG에서 PNG로 변경, 페이지 타이틀을 "PR"로 수정
src/App.vue <main><router-view />의 들여쓰기만 수정
src/components/layout/AppHeader.vue SVG 로고를 이미지로 교체, 로그인 링크를 router-link로 변경, 관련 CSS 정리
src/router/index.js /login, /signUp 라우트 추가, LoginPage/SignUpPage 컴포넌트 import 및 라우트 등록
src/views/LoginPage.vue, src/views/SignUpPage.vue 로그인/회원가입 페이지 컴포넌트 신규 추가, 각종 입력 폼 및 버튼, 이벤트 핸들러 및 스타일 구현

Sequence Diagram(s)

sequenceDiagram
    participant User
    participant AppHeader
    participant Router
    participant LoginPage
    participant SignUpPage

    User->>AppHeader: "로그인" 클릭
    AppHeader->>Router: /login 라우트 이동
    Router->>LoginPage: LoginPage 컴포넌트 렌더링

    User->>LoginPage: "회원가입" 클릭
    LoginPage->>Router: /signUp 라우트 이동
    Router->>SignUpPage: SignUpPage 컴포넌트 렌더링
Loading

Estimated code review effort

🎯 2 (Simple) | ⏱️ ~8 minutes

Possibly related PRs

Suggested reviewers

  • xeexin
  • 0630hwi

Poem

🐰
로그인 창에 햇살이,
회원가입엔 희망이.
로고도 바뀌고,
링크도 반짝!
PR의 새 얼굴,
토끼는 깡총깡총 춤을 춥니다.
🥕✨
"""

✨ Finishing Touches
🧪 Generate unit tests
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/login

🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Explain this complex logic.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai explain this code block.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and explain its main purpose.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Support

Need help? Create a ticket on our support page for assistance with any issues or questions.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai generate docstrings to generate docstrings for this PR.
  • @coderabbitai generate sequence diagram to generate a sequence diagram of the changes in this PR.
  • @coderabbitai generate unit tests to generate unit tests for this PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Copy Markdown

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 8

🔭 Outside diff range comments (1)
src/router/index.js (1)

3-45: 🚨 src/router/index.js: Git 병합 충돌 마커 제거 필요
파일에 남아있는 <<<<<<<, =======, >>>>>>> 마커로 인해 JavaScript 구문 오류가 발생하고 있습니다.

• 파일: src/router/index.js
• 충돌 구간: import 문(3–10행) 및 라우트 정의(19–45행)

먼저 해당 충돌을 올바르게 병합하여 마커를 제거한 뒤, 아래 스크립트로 구문 오류 및 라우터 설정이 정상인지 검증해주세요:

# 구문 검사
node -c src/router/index.js

# 라우트 정의 확인
grep -E "path.*:" -A2 src/router/index.js

# import 확인
grep "^import.*from" src/router/index.js
🧹 Nitpick comments (6)
src/components/layout/AppHeader.vue (1)

7-7: 로고 이미지 접근성을 개선해주세요.

alt 텍스트가 있지만, 이미지 로딩 실패 시 처리와 성능 최적화를 고려해보세요.

다음과 같이 개선할 수 있습니다:

-            <img src="/pr-logo.png" alt="로고" class="logo" />
+            <img 
+              src="/pr-logo.png" 
+              alt="PR 홈페이지 로고" 
+              class="logo"
+              loading="eager"
+              @error="handleLogoError" 
+            />
src/views/LoginPage.vue (4)

69-92: 실제 인증 로직 구현이 필요합니다.

현재 모든 핸들러가 콘솔 로그만 출력하고 있습니다. 실제 서비스에서는 적절한 인증 처리가 필요합니다.

각 인증 방식에 대한 실제 구현을 도와드릴 수 있습니다. 다음 중 어떤 것이 필요하신가요?

  • Kakao SDK 통합
  • Google OAuth 설정
  • 이메일 로그인 폼 구현
  • 에러 처리 및 로딩 상태 관리

20-34: SVG 아이콘을 별도 컴포넌트로 분리하는 것을 고려해보세요.

인라인 SVG가 템플릿을 복잡하게 만들고 있습니다. 재사용성과 유지보수성을 위해 아이콘 컴포넌트로 분리하는 것이 좋겠습니다.

예시:

<!-- components/icons/KakaoIcon.vue -->
<template>
  <svg class="kakao-icon" width="18" height="19" viewBox="0 0 18 19" fill="none">
    <!-- SVG 내용 -->
  </svg>
</template>

그리고 사용 시:

<KakaoIcon class="kakao-icon" />

286-342: 주석 처리된 CSS를 정리해주세요.

대량의 주석 처리된 반응형 CSS 코드가 있습니다. 필요하다면 활성화하고, 그렇지 않다면 제거하여 코드를 깔끔하게 유지해주세요.

코드베이스의 일관성을 위해 사용하지 않는 코드는 제거하는 것이 좋습니다.


161-228: CSS 코드 중복을 줄여보세요.

각 버튼 클래스에서 공통 속성들이 반복되고 있습니다. 공통 클래스를 만들어 유지보수성을 높일 수 있습니다.

예시:

.login-button {
  position: relative;
  width: 100%;
  display: flex;
  justify-content: center;
  align-items: center;
  height: 48px;
  border-radius: 10px;
  cursor: pointer;
  padding: 0;
  font-size: 16px;
  font-weight: 600;
}

.kakao-button {
  @extend .login-button;
  background-color: #FEE500;
  border: 1px solid #fee500;
}
src/views/SignUpPage.vue (1)

180-198: API 연동을 위한 플레이스홀더 메서드들을 완성해주세요.

다음 메서드들이 플레이스홀더 구현 상태입니다:

  • requestVerification: 실제 SMS 인증 API 호출 필요
  • toggleAllAgreements: 약관 동의 로직 구현 필요
  • handleSubmit: 실제 회원가입 API 호출 필요

실제 API 연동 코드 구현을 도와드릴까요? 또는 이를 추적하기 위한 새로운 이슈를 생성해드릴까요?

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro

📥 Commits

Reviewing files that changed from the base of the PR and between fd4b635 and b7be42f.

⛔ Files ignored due to path filters (1)
  • public/pr-logo.png is excluded by !**/*.png
📒 Files selected for processing (6)
  • index.html (1 hunks)
  • src/App.vue (1 hunks)
  • src/components/layout/AppHeader.vue (3 hunks)
  • src/router/index.js (3 hunks)
  • src/views/LoginPage.vue (1 hunks)
  • src/views/SignUpPage.vue (1 hunks)
🧰 Additional context used
🪛 Biome (2.1.2)
src/router/index.js

[error] 5-6: Expected a statement but instead found '======='.

Expected a statement here.

(parse)


[error] 9-10: Expected a statement but instead found '>>>>>>> fd4b635'.

Expected a statement here.

(parse)


[error] 19-19: Expected an expression but instead found '<<'.

Expected an expression here.

(parse)


[error] 19-19: Expected an expression but instead found '<<'.

Expected an expression here.

(parse)


[error] 20-20: Expected an identifier but instead found ''/login''.

Expected an identifier here.

(parse)


[error] 21-21: Expected an identifier but instead found ''Login''.

Expected an identifier here.

(parse)


[error] 22-22: Expected a JSX attribute but instead found ','.

Expected a JSX attribute here.

(parse)


[error] 23-23: Unexpected token. Did you mean {'}'} or &rbrace;?

(parse)


[error] 25-25: expected } but instead found :

Remove :

(parse)


[error] 28-28: Unexpected token. Did you mean {'}'} or &rbrace;?

(parse)


[error] 44-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)


[error] 45-45: Unexpected token. Did you mean {'>'} or &gt;?

(parse)

🔇 Additional comments (4)
src/App.vue (1)

8-10: 코드 들여쓰기 개선이 좋습니다.

메인 콘텐츠 영역의 들여쓰기가 올바르게 수정되어 코드 가독성이 향상되었습니다.

src/components/layout/AppHeader.vue (2)

23-23: 라우터 링크 구현이 올바릅니다.

SPA 네비게이션을 위해 router-link를 사용한 것이 좋습니다. 로그인 페이지로의 올바른 라우팅을 제공합니다.


64-67: 로고 스타일링이 적절합니다.

이미지 요소에 맞게 CSS가 잘 조정되었고, 반응형 처리(width: auto)가 포함되어 있습니다.

src/views/SignUpPage.vue (1)

201-428: CSS 스타일링이 잘 구현되었습니다.

다음 좋은 관행들이 적용되었습니다:

  • CSS 커스텀 속성(변수) 일관된 사용
  • 반응형 디자인을 위한 미디어 쿼리
  • 스코프드 스타일링으로 컴포넌트 격리
  • 접근성을 고려한 포커스 스타일

Comment on lines +47 to +82
<!-- <div class="form-group">
<label class="form-label">휴대폰 번호</label>
<div class="phone-group">
<select v-model="formData.countryCode" class="country-select">
<option value="+82">South Korea +82</option>
<option value="+1">United States +1</option>
<option value="+86">China +86</option>
<option value="+81">Japan +81</option>
</select>
<div class="phone-input-group">
<input
v-model="formData.phoneNumber"
type="tel"
class="form-input phone-input"
placeholder="(예시) 01012345678"
required
/>
<button
type="button"
class="verification-button"
@click="requestVerification"
:disabled="verificationRequested"
>
인증번호 받기
</button>
</div>
</div>
<input
v-if="verificationRequested"
v-model="formData.verificationCode"
type="text"
class="form-input verification-input"
placeholder="인증번호를 입력해주세요."
required
/>
</div> -->
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Jul 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

주석 처리된 코드 블록을 정리해주세요.

대량의 주석 처리된 코드가 있어 코드 가독성을 저해하고 있습니다. 국가 코드 선택 기능이 필요한지 결정하여 구현하거나 완전히 제거해주세요.

코드 정리 방안:

  1. 국가 코드 선택이 필요하다면 주석을 해제하고 완전히 구현
  2. 불필요하다면 주석 처리된 코드를 완전히 삭제
🤖 Prompt for AI Agents
In src/views/SignUpPage.vue between lines 47 and 82, there is a large block of
commented-out code related to phone number input and country code selection.
Decide if the country code selection feature is necessary; if yes, uncomment and
fully implement this block ensuring all related functionality works correctly.
If it is not needed, remove this entire commented-out code block to improve code
readability and maintainability.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정 예정

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@myjuniverse 네, 알겠습니다! 주석 처리된 코드 정리 작업을 진행해주시면 됩니다. 언제든지 추가로 도움이 필요하시면 말씀해주세요.

ᕱ⑅ᕱ

Comment on lines +96 to +107
<!-- 닉네임 -->
<div class="form-group">
<label for="name" class="form-label">닉네임</label>
<input
id="name"
v-model="formData.name"
type="text"
class="form-input"
placeholder="닉네임을 입력해주세요."
required
/>
</div>
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Jul 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

닉네임 필드의 접근성 및 데이터 바인딩 문제를 수정해주세요.

닉네임 필드에서 다음 문제들이 발견되었습니다:

  • label for="name"input id="name"이 이름 필드와 중복됨 (접근성 문제)
  • v-model="formData.name"이 닉네임 데이터를 이름 필드와 공유함 (데이터 바인딩 문제)

다음 diff를 적용하여 수정해주세요:

-        <div class="form-group">
-          <label for="name" class="form-label">닉네임</label>
-          <input
-            id="name"
-            v-model="formData.name"
-            type="text"
-            class="form-input"
-            placeholder="닉네임을 입력해주세요."
-            required
-          />
-        </div>
+        <div class="form-group">
+          <label for="nickname" class="form-label">닉네임</label>
+          <input
+            id="nickname"
+            v-model="formData.nickname"
+            type="text"
+            class="form-input"
+            placeholder="닉네임을 입력해주세요."
+            required
+          />
+        </div>
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
<!-- 닉네임 -->
<div class="form-group">
<label for="name" class="form-label">닉네임</label>
<input
id="name"
v-model="formData.name"
type="text"
class="form-input"
placeholder="닉네임을 입력해주세요."
required
/>
</div>
<!-- 닉네임 -->
<div class="form-group">
<label for="nickname" class="form-label">닉네임</label>
<input
id="nickname"
v-model="formData.nickname"
type="text"
class="form-input"
placeholder="닉네임을 입력해주세요."
required
/>
</div>
🤖 Prompt for AI Agents
In src/views/SignUpPage.vue around lines 96 to 107, the nickname input field
uses the same id "name" and v-model "formData.name" as the name field, causing
accessibility and data binding conflicts. To fix this, change the input's id and
label's for attribute to a unique value like "nickname" and update the v-model
to "formData.nickname" to separate the nickname data from the name field.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정 예정

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@myjuniverse 네, 감사합니다! 닉네임 필드의 접근성과 데이터 바인딩 문제를 수정하시면 폼이 올바르게 작동할 것입니다.

Comment on lines +121 to +126
<div class="agreement-section">
<p class="agreement-text">
영문 대소문자, 숫자, 특수문자를 3가지 이상으로 조합하여 8자 이상
16자 이하로 입력해주세요.
</p>
</div>
Copy link
Copy Markdown

@coderabbitai coderabbitai bot Jul 24, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

비밀번호 검증 로직이 누락되었습니다.

비밀번호 조건에 대한 설명 텍스트만 있고 실제 검증 로직이 구현되지 않았습니다. 사용자가 약한 비밀번호를 입력할 수 있습니다.

비밀번호 검증 함수를 추가하는 것을 고려해보세요:

const isPasswordValid = computed(() => {
  const password = formData.value.password
  const hasUpperCase = /[A-Z]/.test(password)
  const hasLowerCase = /[a-z]/.test(password)
  const hasNumbers = /\d/.test(password)
  const hasSpecialChar = /[!@#$%^&*(),.?":{}|<>]/.test(password)
  const isValidLength = password.length >= 8 && password.length <= 16
  
  const criteriaCount = [hasUpperCase, hasLowerCase, hasNumbers, hasSpecialChar].filter(Boolean).length
  
  return isValidLength && criteriaCount >= 3
})
🤖 Prompt for AI Agents
In src/views/SignUpPage.vue around lines 121 to 126, the password validation
logic is missing despite the presence of explanatory text. Add a computed
property function that checks the password against the criteria: length between
8 and 16 characters, and at least three of the following four conditions
met—uppercase letters, lowercase letters, numbers, and special characters.
Implement this validation function and use it to enforce password strength
before form submission.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

수정 예정

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@myjuniverse 감사합니다! 비밀번호 검증 로직을 추가하시면 사용자 보안이 크게 향상될 것입니다.

Comment on lines +153 to +161
const formData = ref({
email: '',
name: '',
countryCode: '+82',
phoneNumber: '',
verificationCode: '',
password: '',
confirmPassword: ''
})
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

formData에 nickname 속성이 누락되었습니다.

템플릿에서 v-model="formData.nickname"을 사용하고 있지만 formData 객체에 해당 속성이 정의되지 않았습니다.

다음 diff를 적용하여 수정해주세요:

 const formData = ref({
   email: '',
   name: '',
+  nickname: '',
   countryCode: '+82',
   phoneNumber: '',
   verificationCode: '',
   password: '',
   confirmPassword: ''
 })
📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const formData = ref({
email: '',
name: '',
countryCode: '+82',
phoneNumber: '',
verificationCode: '',
password: '',
confirmPassword: ''
})
const formData = ref({
email: '',
name: '',
nickname: '',
countryCode: '+82',
phoneNumber: '',
verificationCode: '',
password: '',
confirmPassword: ''
})
🤖 Prompt for AI Agents
In src/views/SignUpPage.vue around lines 153 to 161, the formData object is
missing the nickname property, which is used in the template with
v-model="formData.nickname". Add a nickname property initialized to an empty
string to the formData ref object to fix this inconsistency.

Comment on lines +166 to +174
const isFormValid = computed(() => {
return formData.value.email &&
formData.value.name &&
formData.value.phoneNumber &&
formData.value.password &&
formData.value.confirmPassword &&
formData.value.password === formData.value.confirmPassword &&
agreeAll.value
})
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

폼 검증 로직과 실제 UI가 일치하지 않습니다.

검증 로직에서 다음 문제들이 발견되었습니다:

  • agreeAll.value를 확인하지만 실제 약관 동의 UI가 없음
  • nickname 필드 검증이 누락됨

검증 로직을 수정하거나 약관 동의 UI를 추가해주세요:

 const isFormValid = computed(() => {
   return formData.value.email &&
         formData.value.name &&
+        formData.value.nickname &&
         formData.value.phoneNumber &&
         formData.value.password &&
         formData.value.confirmPassword &&
-        formData.value.password === formData.value.confirmPassword &&
-        agreeAll.value
+        formData.value.password === formData.value.confirmPassword
 })

또는 약관 동의 UI를 추가하여 agreeAll.value 검증을 유지하세요.

📝 Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
const isFormValid = computed(() => {
return formData.value.email &&
formData.value.name &&
formData.value.phoneNumber &&
formData.value.password &&
formData.value.confirmPassword &&
formData.value.password === formData.value.confirmPassword &&
agreeAll.value
})
const isFormValid = computed(() => {
return formData.value.email &&
formData.value.name &&
formData.value.nickname &&
formData.value.phoneNumber &&
formData.value.password &&
formData.value.confirmPassword &&
formData.value.password === formData.value.confirmPassword
})
🤖 Prompt for AI Agents
In src/views/SignUpPage.vue around lines 166 to 174, the form validation logic
checks for agreeAll.value but there is no corresponding terms agreement UI, and
it also misses validating the nickname field. To fix this, either add the
agreeAll checkbox UI to the form so that the validation matches the UI, or
remove the agreeAll.value check from the validation logic. Additionally, include
a validation check for the nickname field to ensure it is not empty.

Copy link
Copy Markdown
Contributor

@0630hwi 0630hwi left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

스크린샷 2025-07-25 084718 고생했어

@0630hwi 0630hwi merged commit cff0f25 into dev Jul 24, 2025
1 check passed
@myjuniverse myjuniverse deleted the feat/login branch July 28, 2025 11:54
@coderabbitai coderabbitai bot mentioned this pull request Aug 12, 2025
xeexin pushed a commit that referenced this pull request Aug 12, 2025
@coderabbitai coderabbitai bot mentioned this pull request Aug 31, 2025
Merged
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants