-
Notifications
You must be signed in to change notification settings - Fork 0
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
Feat #20 카카오 로그인 로직 변경 #21
The head ref may contain hidden characters: "feat/#19/\uCE74\uCE74\uC624-\uB85C\uADF8\uC778-\uB85C\uC9C1-\uBCC0\uACBD"
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨어요!
로직에는 문제 없어 보이는데 수정하면 좋아 보이는 것들 달아 뒀습니다!
src/main/java/com/gachtaxi/domain/members/controller/AuthController.java
Outdated
Show resolved
Hide resolved
return Members.builder() | ||
.kakaoId(kakaoId) | ||
.email(TMP_EMAIL) | ||
.role(Role.TEMPORARY) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
role은 차후에 admin, user를 구분할 때 쓰여야할 것 같은데, status나 deletedAt을 사용하는 것은 어떨까요?
기본 유저 객체 생성시 @PrePersist로 status를 UNACTIVE로 설정하거나, 아니면 소프트 딜리트가 적용된 상태를 기본 상태로 두고
회원가입이 완료되면 status를 바꾸거나, 소프트 딜리트 된것을 해제하는 식으로요!
이렇게 전역적으로 관리를 해두면 차후 로직에서 user를 조회해올 때 ACTIVE인 유저만 조회하기, 혹은 삭제되지 않은 유저만 조회하기 등으로 일관성있는 개발이 가능할 것 같아요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 status로 관리하면 좋을 것 같습니다!!
저희가 메일 인증, 전화번호 인증 두 가지 인증이 있으니까 EMAIL_PENDING, PHONE_PENDING... 등의 상태를 만들어서 관리하면 좋을 것 같아요!!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
ACTIVE와 INACTIVE인 UserStatus를 만들도록 하겠습니다!
소프트 딜리트는 좀 더 공부해보도록 하겠습니다!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
UserStatus는 회원가입 여부 (활성화 상태)만 나타내는 게 좋을거 같아요!
이미 유저 엔티티에 2차 인증 필드가 전화번호 인증을 나타내고 있기 때문에요!
@Column(name = "email", nullable = false, unique = true) | ||
// UserDetails를 만드는 과정에서 null 방지를 위해 임시로 저장하는 이메일 | ||
// 추후 로직 개선하겠습니다. | ||
private final static String TMP_EMAIL = "[email protected]"; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
그냥 null로 저장이 되면 될 것 같은데, 차후에 개선 부탁드릴게요!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
저도 저희는 로직상 이메일 인증 로직이 따로 되어있고, 이메일 인증 로직시 입력받는 가천 이메일의 정보로 유저를 식별 가능하니까,
실제 이메일이 입력되기 전까지는 해당 이메일 필드를 null로 저장하는 것이 더 적합해보이긴합니다
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
실제 DB에서 임시 유저의 Email은 null로 저장하고
토큰을 만들기 위해서는 더미 이메일을 넣어주도록 수정했습니다!
src/main/java/com/gachtaxi/domain/members/service/AuthService.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다 !!
전체적인 플로우에는 문제가 없어보이긴하는데, 임시 토큰이 아닌 토큰 재발급 시 기존 임시 토큰의 관리 부분이나 임시 토큰이 여러 번 발급될 때, 이전 토큰의 관리 등이 중요할거같습니다
src/main/java/com/gachtaxi/domain/members/entity/enums/Role.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
고생하셨습니다!!
고생하셨습니다 문제 없어보여요 ! |
Feat #21 Presigned Url 반환 API 구현 및 스웨거 설정 추가
📌 관련 이슈
관련 이슈 번호 #
Close #
🚀 작업 내용
임시유저
임시 유저를 위해 ACTIVE와 INACTIVE 상태를 가지는 UserStatus를 추가했습니다.
임시 유저의 email 필드는 DB에 Null로 저장합니다.
대신 임시 유저 토큰을 만드는 과정에는 더미 이메일을 넣도록 했습니다.!
엣지 케이스 방지
해당 엣지 케이스는 optionalMember가 비어있는 지 확인하고
2차적으로 role이 TEMPORARY인 지 확인합니다.
📸 스크린샷
프론트 측에서 인가코드 받도록 로직 수정
백엔드 테스트
프론트는 url에서 code 부분을 파싱하여 백엔드에 전달
Response Body에 authCode로 저장 후 백엔드에 전달
임시 토큰 또한 발급 됩니다
엣지 케이스
회원가입 진행 중 중단된 엣지 케이스
다른 authcode를 사용하여 토큰, 사용자 정보를 가져온 뒤,
TEMPORARY인 유저 발견 시 임시토큰을 발급하고 다시 회원가입을 진행하도록 한다.
📢 리뷰 요구사항