작성
·
153
0
답변 2
1
제가 처리했던 방법은 신규 유저가 소셜로그인을 한 경우 OAuth 제공사로부터 받는 기본 정보를 TempUser 로 관리하고
이 정보를 JWT 로 클라이언트에 보냈습니다.
그리고 부가정보를 입력할 때 이 JWT 를 같이 담아서 서버에 요청하는 방식으로 처리했습니다.
서버는 부가정보와 JWT 를 받으면, JWT 로 TempUser 에서 기본 정보를 찾고, 이 기본 정보와 부가정보를 합쳐서
User 엔티티를 생성하고, 정상적으로 User 가 생성되면 TempUser 를 삭제했습니다.
그리고 이 과정은 트랜잭션 처리를 해서 중간에 문제가 발생하여 회원가입을 완료하지 못하였는데 TempUser 만 사라지지 않도록 했습니다.
추가로 소셜로그인만 하고 부가정보를 입력하지 않는 경우도 있기 때문에 스케쥴 처리로 한달 이상 된 TempUser 들을 삭제하도록 했습니다.
0
안녕하세요!
테이블 설계는 전적으로 설계하는 팀의 마음입니다.
정답은 없습니다.
말씀하신대로 특정 조건들을 파악 할 수 있다면 프론트엔드에서 처리가 가능한 부분입니다.
예를들어
사용자가 생성 됐는데 이메일 확인이 안된경우?
사용자가 생성 됐는데 핸드폰 번호가 확인 안된경우?
사용자가 생성 됐는데 프로필 작성을 하지 않은경우?
이런 경우 외에도 수많은 다른 예시들이 있을 수 있는데 너무 단순한 if문일 뿐입니다.
테이블 설계 또한 boolean 값을 받을수도 있겠지만 칼럼을 nullable로 할 수도 있습니다.
Nullable이 싫다면 관계 테이블을 생성해서 해당 관계 테이블의 값 존재 여부를 확인 할 수도 있죠.
방법은 너무도 많고 프로젝트별로 적합한 방법은 항상 다를 수 밖에 없습니다.
감사합니다!