FC-DEV-FinalProject / final-fe-team4

4조 프론트엔드 깃허브
0 stars 2 forks source link

[feat] 회원가입 구현 및 비밀번호 해쉬적용 #242

Closed sjgaru-dev closed 1 day ago

sjgaru-dev commented 1 day ago

회원가입 비밀번호 1234 입력 -> db에 해쉬값 qwer 로 변환해서 string 으로 저장. 로그인 1234 입력 -> 해쉬값 qwer 으로 변환 = db값과 매칭 임시비밀번호 체크 = 해쉬 전환 X , qwer 을 string 으로 보내서 db값과 매칭

그래서 해시적용이 안 된 기존 user1,2,3 은 임시비밀번호 사용 체크해야 합니다.


aws 람다 함수로 coolsms 전화번호 인증 api 만들었으며 포스트맨으로 람다함수 url로 { "phone" : "010-1234-1234" } 보내면 인증번호 문자 오는데 페이지에 연결하는 것은 아직 cors 에러 못 잡았습니다. 람다 url을 api 게이트웨이 설정으로 sms.popomance.kr 로 변환 작업까지 예정이고 300원 제공된 테스트 요금으로 하고 있는데, 최소 충전금액 1만원이라 충전할까... 생각중입니다. image

https://console.coolsms.co.kr/dashboard team4.popomance@gmail.com / 4whghkdlxld!

Sourcery에 의한 요약

계정 복구를 위한 SMS를 통한 전화번호 인증을 도입하고 안전한 저장을 위한 비밀번호 해싱을 구현합니다. 필드 처리 개선 및 임시 비밀번호 지원과 같은 추가 기능으로 회원가입 및 로그인 양식을 향상시킵니다.

새로운 기능:

개선 사항:

Original summary in English ## Summary by Sourcery Introduce phone number verification via SMS for account recovery and implement password hashing for secure storage. Enhance the signup and login forms with improved field handling and additional features like temporary password support. New Features: - Implement phone number verification via SMS using AWS Lambda and integrate it into the account recovery process. - Add password hashing using the joaatHash function for secure password storage during signup and login. Enhancements: - Refactor the signup form to use consistent naming conventions for password fields and improve phone number handling. - Enhance the login form to support temporary passwords and remember email functionality.
sourcery-ai[bot] commented 1 day ago

리뷰어 가이드 by Sourcery

이 PR은 비밀번호 해싱 및 전화 인증 기능을 포함한 사용자 등록을 구현합니다. 주요 변경 사항으로는 joaat 알고리즘을 사용한 비밀번호 해싱 기능 추가, AWS Lambda를 통한 SMS 인증 구현, 이러한 새로운 기능을 지원하기 위한 회원가입 및 계정 복구 흐름 업데이트가 포함됩니다.

비밀번호 해싱을 통한 사용자 등록 시퀀스 다이어그램

sequenceDiagram
    actor User
    participant SignupForm
    participant AuthAPI
    participant Utils
    User->>SignupForm: 등록 양식 작성
    SignupForm->>Utils: joaatHash(pwd)
    SignupForm->>AuthAPI: signup({email, name, hashedPwd, phoneNumber})
    AuthAPI->>AuthAPI: 해싱된 비밀번호로 사용자 저장
    AuthAPI-->>SignupForm: 성공 응답
    SignupForm-->>User: 성공 대화 상자 표시

AWS Lambda를 사용한 전화 인증 시퀀스 다이어그램

sequenceDiagram
    actor User
    participant FindAccountForm
    participant SMSAPI
    User->>FindAccountForm: 전화 인증 요청
    FindAccountForm->>SMSAPI: sendSMS(phone)
    SMSAPI-->>FindAccountForm: SMS 전송됨
    User->>FindAccountForm: 인증 코드 입력
    FindAccountForm->>SMSAPI: verifySMS(phone, code)
    SMSAPI-->>FindAccountForm: 인증 성공
    FindAccountForm-->>User: 인증 성공 표시

사용자 모델에 대한 업데이트된 클래스 다이어그램

classDiagram
    class SignupFormData {
        -string email
        -string pwd
        -string pwdConfirm
        -string name
        -string phoneNumber
        -string[] terms
    }
    class AuthAPI {
        +login(email: string, pwd: string, isTemporaryPwd: boolean)
        +signup(signupRequest: SignupRequest)
    }
    class Utils {
        +joaatHash(str: string): string
        +formatPhoneNumber(phoneNumber: string): string
    }
    class SMSAPI {
        +sendSMS(phone: string)
        +verifySMS(phone: string, token: string)
    }
    SignupFormData --> AuthAPI
    AuthAPI --> Utils
    FindAccountForm --> SMSAPI

파일 수준 변경 사항

변경 사항 세부 사항 파일
사용자 등록 및 로그인에 대한 비밀번호 해싱 구현
  • 비밀번호 해싱을 위한 joaatHash 유틸리티 함수 추가
  • 서버로 전송하기 전에 비밀번호를 해싱하도록 회원가입 흐름 수정
  • 해싱된 비밀번호와 임시 비밀번호 모두를 지원하도록 로그인 기능 업데이트
  • 로그인 양식에 임시 비밀번호 사용을 위한 체크박스 UI 추가
src/utils/joaatHash.ts
src/api/authAPI.ts
src/components/custom/forms/SigninForm.tsx
계정 복구를 위한 SMS 인증 기능 추가
  • AWS Lambda와의 SMS 인증 API 통합 구현
  • 계정 복구 흐름에 전화번호 인증 UI 추가
  • 전화번호 포맷팅 유틸리티 생성
  • 전화 인증을 요구하도록 비밀번호 복구 업데이트
src/api/smsAPI.ts
src/utils/phoneNumber.ts
src/components/custom/forms/FindAccountForm.tsx
향상된 유효성 검사 및 사용자 경험을 갖춘 회원가입 양식 개선
  • 이메일 중복 확인 기능 추가
  • 양식 유효성 검사 스키마 업데이트
  • 성공적인 등록 후 성공 대화 상자 추가
  • 이메일 기억 기능 구현
src/components/custom/forms/SignupForm.tsx
src/utils/signupSchema.ts
src/api/profileAPI.ts

팁 및 명령어 #### Sourcery와 상호작용하기 - **새로운 리뷰 트리거:** 풀 리퀘스트에 `@sourcery-ai review`라고 댓글을 남깁니다. - **토론 계속하기:** Sourcery의 리뷰 댓글에 직접 답글을 남깁니다. - **리뷰 댓글에서 GitHub 이슈 생성:** 리뷰 댓글에 답글을 달아 Sourcery에게 이슈 생성을 요청합니다. - **풀 리퀘스트 제목 생성:** 풀 리퀘스트 제목 어디에나 `@sourcery-ai`를 작성하여 언제든지 제목을 생성합니다. - **풀 리퀘스트 요약 생성:** 풀 리퀘스트 본문 어디에나 `@sourcery-ai summary`를 작성하여 언제든지 PR 요약을 생성합니다. 이 명령어를 사용하여 요약을 삽입할 위치를 지정할 수도 있습니다. #### 경험 맞춤화 [대시보드](https://app.sourcery.ai)에 접속하여: - Sourcery가 생성한 풀 리퀘스트 요약, 리뷰어 가이드 등과 같은 리뷰 기능을 활성화하거나 비활성화합니다. - 리뷰 언어를 변경합니다. - 사용자 정의 리뷰 지침을 추가, 제거 또는 편집합니다. - 기타 리뷰 설정을 조정합니다. #### 도움 받기 - 질문이나 피드백이 있는 경우 [지원 팀에 문의](mailto:support@sourcery.ai)하세요. - 자세한 가이드와 정보를 보려면 [문서](https://docs.sourcery.ai)를 방문하세요. - [X/Twitter](https://x.com/SourceryAI), [LinkedIn](https://www.linkedin.com/company/sourcery-ai/) 또는 [GitHub](https://github.com/sourcery-ai)에서 Sourcery 팀을 팔로우하여 소식을 받아보세요.
Original review guide in English ## Reviewer's Guide by Sourcery This PR implements user registration with password hashing and phone verification features. The main changes include adding password hashing functionality using the joaat algorithm, implementing SMS verification through AWS Lambda, and updating the sign-up and account recovery flows to support these new features. #### Sequence diagram for user registration with password hashing ```mermaid sequenceDiagram actor User participant SignupForm participant AuthAPI participant Utils User->>SignupForm: Fill registration form SignupForm->>Utils: joaatHash(pwd) SignupForm->>AuthAPI: signup({email, name, hashedPwd, phoneNumber}) AuthAPI->>AuthAPI: Store user with hashed password AuthAPI-->>SignupForm: Success response SignupForm-->>User: Show success dialog ``` #### Sequence diagram for phone verification using AWS Lambda ```mermaid sequenceDiagram actor User participant FindAccountForm participant SMSAPI User->>FindAccountForm: Request phone verification FindAccountForm->>SMSAPI: sendSMS(phone) SMSAPI-->>FindAccountForm: SMS sent User->>FindAccountForm: Enter verification code FindAccountForm->>SMSAPI: verifySMS(phone, code) SMSAPI-->>FindAccountForm: Verification success FindAccountForm-->>User: Show verification success ``` #### Updated class diagram for the user model ```mermaid classDiagram class SignupFormData { -string email -string pwd -string pwdConfirm -string name -string phoneNumber -string[] terms } class AuthAPI { +login(email: string, pwd: string, isTemporaryPwd: boolean) +signup(signupRequest: SignupRequest) } class Utils { +joaatHash(str: string): string +formatPhoneNumber(phoneNumber: string): string } class SMSAPI { +sendSMS(phone: string) +verifySMS(phone: string, token: string) } SignupFormData --> AuthAPI AuthAPI --> Utils FindAccountForm --> SMSAPI ``` ### File-Level Changes | Change | Details | Files | | ------ | ------- | ----- | | Implemented password hashing for user registration and login |
  • Added joaatHash utility function for password hashing
  • Modified signup flow to hash passwords before sending to server
  • Updated login functionality to support both hashed and temporary passwords
  • Added checkbox UI for temporary password usage in login form
| `src/utils/joaatHash.ts`
`src/api/authAPI.ts`
`src/components/custom/forms/SigninForm.tsx` | | Added SMS verification functionality for account recovery |
  • Implemented SMS verification API integration with AWS Lambda
  • Added phone number verification UI in account recovery flow
  • Created phone number formatting utilities
  • Updated password recovery to require phone verification
| `src/api/smsAPI.ts`
`src/utils/phoneNumber.ts`
`src/components/custom/forms/FindAccountForm.tsx` | | Enhanced signup form with improved validation and user experience |
  • Added email duplication check functionality
  • Updated form validation schema
  • Added success dialog after successful registration
  • Implemented remember email functionality
| `src/components/custom/forms/SignupForm.tsx`
`src/utils/signupSchema.ts`
`src/api/profileAPI.ts` | ---
Tips and commands #### Interacting with Sourcery - **Trigger a new review:** Comment `@sourcery-ai review` on the pull request. - **Continue discussions:** Reply directly to Sourcery's review comments. - **Generate a GitHub issue from a review comment:** Ask Sourcery to create an issue from a review comment by replying to it. - **Generate a pull request title:** Write `@sourcery-ai` anywhere in the pull request title to generate a title at any time. - **Generate a pull request summary:** Write `@sourcery-ai summary` anywhere in the pull request body to generate a PR summary at any time. You can also use this command to specify where the summary should be inserted. #### Customizing Your Experience Access your [dashboard](https://app.sourcery.ai) to: - Enable or disable review features such as the Sourcery-generated pull request summary, the reviewer's guide, and others. - Change the review language. - Add, remove or edit custom review instructions. - Adjust other review settings. #### Getting Help - [Contact our support team](mailto:support@sourcery.ai) for questions or feedback. - Visit our [documentation](https://docs.sourcery.ai) for detailed guides and information. - Keep in touch with the Sourcery team by following us on [X/Twitter](https://x.com/SourceryAI), [LinkedIn](https://www.linkedin.com/company/sourcery-ai/) or [GitHub](https://github.com/sourcery-ai).
github-actions[bot] commented 1 day ago

Visit the preview URL for this PR (updated for commit 3b6788a):

https://aipark-four-t--242-9kco86gw.web.app

(expires Thu, 05 Dec 2024 20:44:05 GMT)

🔥 via Firebase Hosting GitHub Action 🌎

Sign: 0a4b3ef6ecc2c695a6a0d6ade46651e032870a9f