[MINTime 프로젝트] 영화 추천, 리뷰 사이트 개발 회고록 - 1 (accounts)
ROOT 게시물은 이쪽 ↓↓↓↓↓↓
https://in0-pro.tistory.com/29
1. 회원가입
회원가입 버튼은 네비게이션 최우측에 있다. 로그인 페이지 안에 회원가입을 포함시킬까? 잠깐 고민했는데, 접근성을 고려하면 바깥에 있는 것이 나을 것 같다고 판단했다.
사용자 이름(아이디로 사용됨), 비밀번호만 지정하면 회원가입이 완료된다.
보통 일반적인 사이트는 이메일이나 휴대폰 번호 인증까지 있지만, 8일 프로젝트에서 이것까지 신경 쓰면 머리가 터질 것 같아서.. ㅎㅎ 과감히 패스했다.
한 가지 아쉬운 점은 사용자 이름에 도움말이 배경색에 가려져 잘 안보인다는 점이다.
저 부분만 좀 더 어두운 회색으로 처리했어야 했나? 싶긴 하다.
그리고 회원가입과 로그인 페이지로 이동하면 자동으로 저 이름 부분에 커서가 깜빡이고 바로 입력할 수 있게 되어있는 점이 만족스럽다.
+ 만약 로그인 한 상태에서 회원가입 페이지에 접근하면 메인 페이지로 redirect 되도록 if request.user.is_authenticated를 이용하여 처리하였다.
또한, 회원가입 후에는 로그인 과정 필요 없이 유효성 검사 후 자동으로 로그인까지 되도록 구현했다.
2. 로그인
로그인 페이지도 간결하게 구성하였다.
다만, 카카오 계정으로도 로그인을 할 수 있도록 API를 이용했다.
카카오 로그인 API 구현은 팀원 분이 맡아서 해주셔서 내가 모두 설명할 수는 없지만, 코드를 보면
1. 버튼을 클릭할 경우 kakao_login이라는 패스로 넘어가고, 해당 패스에서 클라이언트 아이디(카카오에서 발급받은 것)와 redirect 할 uri(oauth라고 정의했다.)를 세션에 저장하고 특정 카카오 주소로 redirect 시킨다.
2. 그리고 그 곳에서 카카오가 나름대로 처리를 해주고 oauth로 주소를 다시 넘겨주는데, 아까 넘긴 세션 정보와 방금 넘어온 코드를 합쳐 다시 get을 요청한 다음, 받은 최종 값(access_token)을 헤더에 담아 어디론가 또 get 요청을 한다.
3. 그리고 받은 값에 따라 이미 가입된 회원이면 이메일 값을 그대로 받고, 새로운 회원이면 이메일 값을 새로 받는다. 그리고 로그인을 해준다.
이 정도의 과정을 거치는 듯 하다.
3. 로그아웃
보통 웹사이트가 그러하듯 로그아웃은 따로 페이지가 없고, 네비게이션에 버튼만 존재한다.
로그인되어있는 유저만 접근이 가능하고(@login_required) 카카오 로그아웃은 따로 존재한다.
카카오 계정은 로그아웃 말고 탈퇴 기능도 있다.
일반 계정도 탈퇴 기능을 만들걸,, 하는 아쉬움이 조금 있다.
4. 프로필
일반 회원의 경우 금색 버튼과 헬프 메시지가 없다.
4-1. 추천 영화, 맞춤 상영예정작
알고리즘은 팀원님께서 구현해주셨다.
사용자가 '좋아요' 표시한 영화의 장르를 카운트하고, 카운트한 숫자가 많은 2개의 장르를 선택하여 추천 영화를 보여주고,
맞춤 상영예정작은 2개의 장르만 선택하지 않고, 사용자가 좋아요 한 모든 장르를 우선순위로 보여준 다음 남은 영화를 후순위로 보여준다.
추천 영화는 본인의 페이지인 경우에만 보이고, 다른 사람의 페이지를 방문한 경우에는 제외하고 보여준다.
4-2. 작성한 게시글, 작성한 댓글, 좋아요 한 영화, 작성한 리뷰
당연한 것들을(?) 보여준다. 네이버나 다음 카페에서 내가 쓴 글 보기 버튼과 동일한 기능을 한다.
좋아요한 영화는 각 영화마다 하트가 있어 이 탭에서 바로 좋아요 취소를 할 수 있다.
다만 비동기 처리가 되어있기 때문에, 좋아요 취소 시 리스트에서 바로 사라지므로
다시 좋아요를 누르기 위해서는 영화를 찾아야 할 것이다.
4-3. 닉네임 수정
이름 옆에 작게 붙어있는 닉네임 수정을 누르면 아래의 페이지로 이동한다.
닉네임과 아이디를 따로 구분하지 않고 사용하며,
게시글, 리뷰 등과도 외래 키로 연결되어있기 때문에 닉네임을 변경하면 내가 이전에 쓴 글의 작성자명도 자동으로 바뀐다.
다음 챕터에서는 우리 서비스의 main app인 movies를 살펴보자.