목적
•
인증시스템 완성 시 되어야 하는 기능들을 정리한다.
•
인증시스템 구조의 대략적인 모습을 함께 그려본다.
•
인증시스템 구축을 위해 해야 하는 작업들을 논의한다.
•
인증시스템에 대해 이안, 파이가 같은 생각을 하는지 확인한다. 다른 부분이 있으면 맞춘다.
내용
1. oauth를 사용해야 하는 이유
•
카카오톡 로그인을 위해서
•
kakao
2. firebase 를 사용해야 하는 이유
•
firebase를 사용한다는 것은?
1.
정보 저장을 firestore에만 할 수 있다
2.
firebase에서 사용하는 여러가지 util들을 이용한다.
•
firebase를 사용하면 좋은 경우는
◦
firebase만 구축하면, 인증 정보를 저장하는 db가 별도로 필요하지 않은 경우
◦
firebase를 구축했을 때 시간을 아낄 수 있는 경우
▪
인증 정보용 테이블/기능을 별도로 구현하는 것보다 시간을 아낄 수 있는 경우
•
firebase를 검토한 이유는
◦
레거시에서도 썼으니까
◦
레거시 (signal.bz) 에서 oauth를 사용한 이유
▪
회원가입, 비번찾기 를 구현하는 시간을 아끼기 위해
3. 그렇다면, 시그널에서 회원 정보를 어디에 저장할것인가
•
선택 가능한 방법은 3가지가 있음
a. firestore
b. rdbms(혹은 자체 구축 db)
c. rdbms(혹은 자체 구축 db) + firestore
•
현재까지의 판단
◦
rdbms는 무조건 사용 해야 한다
▪
다른 테이블에서, User 테이블과 관계를 맺고 정보를 찾아야 하는 경우들이 반드시 생길 것이기 때문
◦
선택가능한 방법은 b. 와 c.
▪
이 중에서, 어느 방법이 더 좋을지에 대한 검토가 필요
4. 필요한 api들을 정리한다.
•
필요한 기능
◦
조회
▪
내 정보를 확인한다
▪
아이디를 찾는다
◦
요청
▪
회원가입한다
•
일반 계정으로 회원가입한다
◦
필요한 정보
▪
이메일
▪
비밀번호
▪
휴대폰번호
▪
약관동의여부 (서비스 이용 약관, 개인정보처리방침)
•
카카오 계정으로 회원가입한다
◦
카카오에서 가져와야 하는 정보
▪
이메일
▪
휴대폰번호
▪
약관동의여부 (서비스 이용 약관, 개인정보처리방침)
▪
로그인한다
•
카카오 계정으로 로그인한다
•
일반 계정으로 로그인한다
▪
로그아웃한다
◦
수정
▪
비밀번호 변경 메일을 요청한다
5. db를 설계한다
•
회원가입 시 저장해야 하는 정보
◦
User 테이블 생성
▪
id
▪
email
▪
password
▪
phoneNumber
◦
UserTermAgreement 테이블 별도 구현
▪
id
▪
userId
▪
createdAt
▪
termType
•
ts에 사용하는 테이블 필드명과, mysql 테이블에 정의할 칼럼명은 아래와 같이 하도록 함
◦
ts 코드에서는 camel로 작성하면, mysql 칼럼은 snake로 치환하도록 typeorm 설정
6. 함께 코딩을 해본다
•
◦
파이와 이안이 커밋을 나눠서 진행
결론
•
파이어베이스와 rdbms를 같이 썼을 때의 장점이 무엇인지 확인한다
◦
이안
•
시그널 User db로 회원가입과 카카오싱크와 연결
◦
파이
•
시그널 User db로 로그인과 카카오싱크와 연결
◦
파이
•
코드 작성
◦
열심히