Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

회원가입 (아이디, 비번, 이메일 조건 포함) 1차 commit #3

Merged
merged 4 commits into from
Oct 2, 2023

Conversation

DeveloperPMYJ
Copy link
Contributor

@DeveloperPMYJ DeveloperPMYJ commented Sep 21, 2023

1. 본 PR이 우리 팀의 웹 서비스 제품성에 어떠한 기여를 하였고,
사용자에게 어떠한 기대효과를 전달하는지 작성해주세요.

  • 내 PR이 제품 내 어떠한 기능적인 배경/전후맥락 가운데 개발되었나요?

고객의 회원 전환 및 유입을 최우선으로 하여, 우선 회원가입 유저를 늘리고, 회원가입 중 이탈을 줄이기 위해,
주소와 같은 세부 정보들은 결제창에서 받고, 회원가입 시 받는 유저 정보는 간소화 하였습니다.
또한, 비밀번호와 아이디 특수문자와 길이 조건을 보안을 지킬 수 있는 선에서 최소한의 제한을 두었습니다.

  • 내 PR이 Merge 됨으로써 유저에게 전달되는 편익/기대효과는 무엇일까요?

유저는 최소한의 시간을 투자하여, 회원가입을 하고 관심 있는 상품 리스트들을 보며, 동시에 장바구니에 담아둘 수 있습니다.
회원가입을 한 뒤 장바구니에 담아두면, 유저 입장에서는 저장 기능으로 활용할 수 있기에,
회원가입에 소요되는 시간 단축이 큰 역할을 할 것입니다.

바쁜 현대사회에, 쇼핑을 틈틈이 시간이 날 때마다 하게 되면, 장바구니 담기와 결제하기 단계를 동시가 아닌, 시간 차가 발생합니다. 장바구니에 담아두고, 여러 상품을 시간을 두고 비교를 할 수도 있습니다. 간편한 회원가입을 통해 추후 쇼핑을 이어서 할 수 있도록, 장바구니 기능을 활용하여 저장 기능을 할 수 있는 기대효과가 있습니다.


2. 이 브랜치에서 어떤 내용을 개발했는지 큰 제목과 상세 내역을 적어주세요.

회원가입 기능

  • 회원가입에 필요한 필수조건 ( 이름, 유저 아이디, 비밀번호, 생일(YYYY-MM-DD),이메일, 휴대번호, 성별)을 기입했는지 확인하는 key-error
  • email : '. @' 필수 포함 (프론트엔드와 협의 후 변동 가능)
  • 유저 아이디: 공백 없는 영문/숫자 포함, 6자리 이상
  • 회원가입한 유저 정보 -> DB 저장 : 필수조건 + 선택조건(recommender)까지

3. 개발한 화면을 캡쳐해서 첨부 해 주세요.


- (drag & drop 또는 첨부파일 추가) 스크린샷 2023-09-22 오전 8 51 43 스크린샷 2023-09-22 오전 8 52 53 스크린샷 2023-09-22 오전 8 53 03

4. 이 브랜치에서 개발하면서 느꼇던 개발 성장포인트를 적어주세요.

이전의 과제들과 Project 1의
회원가입 기능과 크게 다르지 않을 것이라 생각했는데,
닥터마틴의 실제 페이지의 '회원가입 절차'에 따라 코드를 짜보니,
여태 했던 기능의 이상의 부분들도 고려해야 했습니다.

가령,

  • 유저아이디를 침과 동시에 "사용가능한 아이디 / 중복된 아이디 입니다" 메세지가 아래에 뜨는 것,
  • 비밀번호 확인을 위해 비밀번호 입력 창이 2개가 있는 것
  • 다른 이메일 입력하는 방식이: @뒷부분의 도메인 주소가 주어지는 방식, 고객은 앞단만 입력 -> 프론트엔드와 협의가 필요하다는 점을 배움
  • 공백 없는 문자열을 치는 예외처리
  • 회원가입 페이지에서, 프론트엔드 vs 백엔드 작업 구분
  • key error 체크를 할 경우, 필수 입력 조건만 포함한다는 것
  • key error 시 , return message에서 어떤 필수입력이 빠졌는지 각각 보내줄 것인지 vs "필수 입력란을 모두 채워주세요"

이런 과정에서, 제가 일상에서 회원가입을 할 때에, 사이트마다 다르게 보이는 메세지들이 어떤 작업을 거쳤을지
고객이 아닌, 백엔드 개발자의 입장에서 알 수 있게 되었습니다.


app.js Outdated
const email = me.email;

// key error (필수 입력 정보 없을 경우)
if ( username === undefined || userid === undefined
Copy link
Contributor

Choose a reason for hiding this comment

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

username === undefined 는 !username 으로 축약될 수 있을 것 같습니다! 개선하면 코드 가독성이 더 좋아지지 않을까 싶습니다

|| gender === undefined) {
const error = new Error("KEY_ERROR");
error.statusCode = 400;
throw error;
Copy link
Contributor

Choose a reason for hiding this comment

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

const error = new Error("KEY_ERROR");
error.statusCode = 400;
throw error;

해당 부분은 utils 폴더의 throwError(400, 'KEY_ERROR') 함수를 사용해서 축약될 수 있을 것 같습니당

// email . @ 필수 포함 정규식 (프론트와 협의)
const emailRegex = /^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}$/;

if (!emailRegex.test(email)) {
Copy link
Contributor

@03290419 03290419 Sep 22, 2023

Choose a reason for hiding this comment

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

!emailRegex.test(email)

해당 부분은 utils 폴더의 isValidData(emailRegex, email) 함수를 사용해서 축약될 수 있을 것 같습니당

Copy link
Contributor

@03290419 03290419 left a comment

Choose a reason for hiding this comment

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

작업 수고 많으셨습니다! 재사용 될 수 있는 부분만 첨언해 두었어요 확인해보시고 사용해보시면 좋겠습니다!

Copy link
Contributor

@03290419 03290419 left a comment

Choose a reason for hiding this comment

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

현재 app.js 에서는 myDataSource 를 호출하지 않고 있어서, 해당 부분은 머지하시면 제가 추가하도록 하겠습니다~ 머지 하셔도 될 것 같습니다

@DeveloperPMYJ DeveloperPMYJ merged commit 2a7e702 into dev Oct 2, 2023
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