3. 카카오 사용자 정보로 회원가입 구현
카카오 사용자 회원가입 설계
관심 상품 등록을 했을 때 회원 구분이 필요하기 때문에, 카카오서버에서 받은 사용자 정보를 이용해 회원 가입을 한다.
현재 User 테이블 확인
카카오로 부터 받은 사용자 정보
1. kakaoid
2. nickname
3. email
카카오 사용자 정보 JSON의 예
테이블 설계 옵션
1. 카카오 User를 위한 테이블 (ex. KakaoUser)을 하나 더 만든다.
장점 : 결합도가 낮아짐
성격이 다른 유저 별로 분리 -> 차후 각 테이블의 변화에 서로 영향을 주지 않음
예) 카카오 사용자들만 profile_image 컬럼 추가해서 사용 가능
단점 : 구현 난이도가 올라감
예) 관심상품 등록 시, 회원별로 다른 데이블을 참조해야 함
1. 일반회원 : User - Product
2. 카카오 회원 : KakaoUser - Product
2. 기존 회원(User) 테이블에 카카오 User 추가
장점 : 구현이 단순해짐
단점 : 결합도가 높아짐
폼 로그인을 통해 카카오 로그인 사용자의 username, password를 입력해서 로그인한다면??
실습에선 User테이블에 카카오 User를 추가하는 방식으로 한다.
패스워드를 UUID로 설정한 이유
폼 로그인을 통해서 로그인되지 않도록
회원가입을 하든 로그인을 하든 이미 존재하는 User 테이블을 사용할 것이기 때문에 User타입을 사용한다.
카카오 정보를 받아오는 생성자가 있고 kakaoId 필드도 있다.
회원 가입 처리에서 받은 함수이다.
이미 존재하는 카카오 회원인지 검사한다. 현재 userRepository에 findByKakaoId 함수가 없기 때문에 만들어준다.
이미 존재하는 카카오 회원이면 그 정보를 객체에 담아서 return하고 아니라면 신규 회원가입한다.