[모바일 프로그래밍] haru

오홍석·2022년 12월 16일
0
post-thumbnail

haru가 무엇인가?

계획을 정리하는 것은 많은 장점이 있다. 하지만 여러가지 이유로 계획을 정리하고 이행하지 않는 경우가 많다. 이러한 문제점을 해결하기 위해 하루는 서로의 일상을 공유하고 계획을 얼마나 잘 이행하였는지 통계를 보여줌으로써 사용자에게 동기를 부여하고자 하는 어플리케이션이다.
즉, 하루는 사람들의 일상에서 생산성있는 삶을 위해 동기를 부여해줄 수 있는 서비스를 제공하고자 한다.

맡은 부분

User 기반의 회원 관련 기능을 맡았다. 회원가입, 로그인, 로그아웃과 같은 회원 관리 기능을 구현하는 것을 목표로 하였으며, 초기 구조 계획 당시 Haru의 모든 서비스는 User 정보 기반으로 동작하기 때문에 다른 서비스 제공을 위해 User 정보를 가공하여 주고 받는 기능 또한 구현하는 것을 목표로 하였다. 회원가입 기능은 기본적으로 이메일, 사용자 이름, 비밀번호를 받아 가입하는 것으로 계획하였고 또한, 로그인 기능에서 카카오 계정을 통해 로그인하는 기능또한 제공하여 좋은 사용자 경험을 제공하는 것도 목표 중 하나이다.

구조

1.회원가입

Kotlin으로 작성된 프론트 단에서 입력받은 회원 정보의 유효성을 검사한 후, retrofit을 통해 서버로 정보를 넘겨주고, 서버단에서는 넘겨받은 정보를 바탕으로 이메일 중복검사를 진행한다. 또한 비크립트를 사용하여 비밀번호를 Hashed text로 만들어 User Account의 기본 정보로 설정하고 이를 데이터 베이스에 정보를 저장하고 결과를 반환한다. 이것을 다시 서버에서는 프론트 단으로 반환하여 주는 과정을 거친다.

  1. 로그인

    로그인의 종류를 두 가지로 구현하였는데, 앱을 통해 생성한 계정으로 로그인하는 방법과 카카오 계정을 사용한 로그인 방식이다.
    • 직접 생성한 계정을 통한 로그인
      프론트 단에서 입력받은 이메일과 비밀번호를 서버로 넘겨주면, 서버단에서는 Passport라이브러리의 local 전략을 사용하여 입력받은 이메일이 DB에 존재하는지, 또 올바른 비밀번호인지를 검사한다. 그리고 유효한 사용자라면 유저의 이메일을 JWT토큰으로 변환하여 반환하여 주고 그렇지 않다면 에러메시지를 반환한다. JWT를 넘겨받은 프론트 단에서 JWT를 프리퍼런스에 저장하고, 이후 모든 요청에 JWT를 포함하여 유효한 사용자임을 알려준다. 만약 JWT대신 에러 메시지가 반환된다면 이를 바탕으로 Toast 메시지를 띄워준다.
    • 카카오 계정을 통한 로그인
      카카오톡에 계정이 연결되어 있는 것을 바탕으로 프론트 단에서 카카오 SDK를 통해 kakao auth server에 로그인 요청을 보내고, 만약 계정이 연결되어 있지 않다면 카카오 계정을 직접 입력하는 절차를 거친다. 후에 입력이 정상적이라면 카카오 인증 서버에서 Access kakao Token을 반환하여 준다. 반환받은 토큰을 서버단으로 보내면 서버단에서 다시금 kakao 인증 Server에 정상적인 token인지 확인하는 절차를 거친다. 정상적인 token이라면 kakao server에서 User 정보를 반환하여 주고, 이를 바탕으로 DB에 존재하는 아이디인지 확인을 거치고 없다면 생성하고, 있다면 update해주는 기능을 수행한다. 다음 과정으로 서버단에서 해당 정보를 JWT로 변환하여 프론트 단으로 전송하면 프론트 단에서는 다른 기능 사용을 위해 전역적으로 해당 JWT를 관리한다. 카카오 토큰을 통해서 얻은 정보를 JWT로 변환함으로써 다른 방식의 로그인이더라도 같은 형식의 토큰으로 관리할 수 있게 구현하였다.

배운 점

이번 프로젝트를 통해서 백과 프론트를 모두 경험해 볼 수 있었고, 처음 접해보는 것이라 시작이 쉽지는 않았지만 많은 부분에서 경험과 지식을 쌓을 수 있었다. 여러 명이서 프로젝트를 경험하면서 협업하는 방식과 일정관리에 대해서 체득할 수 있었고, 보안에 관해서도 공부를 할 수 있었다. 또한 여러가지 프레임워크들을 사용해보면서 다양한 방식을 접해볼 수 있어 좋은 경험이였다.

profile
기동코딩

0개의 댓글