codestates / codestates/bodysign-frontend

[Task] [Server] Auth 재구성

Open
#106 0 comments 1 reaction 1 assignee Claimed by @Jaeja-Phil View on GitHub
E: 12h Server
Dominant language
TypeScript
Stars
1
Forks
1
PR merge metrics
No merged PRs in 30d

Description

### ISSUE
- Group: `server`
- Type: `fix`
- Detail: Auth 재구성

### Login Flow

비고: 모든 Authentication 절차는 rest-api 형태로 진행하며, authorization은 Authorization 헤더에 `Bearer access_token_from_server` 를 추가하여 진행한다.

#### Local 로그인

1. 회원가입 누를 시 아래의 signup 페이지로 이동
2. `이메일`, `비밀번호`, `이름`, `성별`, `유저타입(트레이너/유저)` 의 공통 필드를 작성
3. 트레이너일시 `관심사` 추가 작성
4. 유저일시 `생년월일`, `휴대폰번호` 를 추가작성
5. 실패할 시 (이미 존재하는 이메일일 경우) 기존 페이지에서 벗어나지 않고 "이미 존재하는 이메일입니다" 표시
6. 성공할 시 response 객체에 accessToken, refreshToken반환, 클라이언트는 이 둘을 모두 로컬스토리지에 저장한 후 header에 accessToken을 포함시켜 graphql 요청
7. accessToken이 만료될 시 서버에서 accessToken이 만료되었음을 알려주는 에러메세지 반환
8. 로컬스토리지에 저장해둔 refreshToken으로 accessToken을 재발급 받음
9. refreshToken도 만료되었다는 에러 메시지를 받을 시 login페이지로 이동
10. refreshToken으로 재발급 성공시 6번과 동일한 작업을 수행
11. 6~10번 작업을 반복

![image](https://user-images.githubusercontent.com/62484853/147475348-def0396f-ed18-4210-bfbe-b6f41a35522d.png)

#### Social 로그인

1. [UI] Google로 로그인 버튼 누를 시 구글 oauth페이지로 이동, 본인임을 인증
2. [UI] 성공할 시 구글에서 accessToken을 전달받음
3. [UI] POST /auth/google (서버)에 accessToken 전송, 서버에서 accessToken이 제대로 된것인지 확인
4. [API] 구글에서 accessToken이 자신이 발급한 것이 맞다는 응답을 받을시 유저정보와 refreshToken을 받음
5. [API] 이 refreshToken을 저장, 서버에서 새로운 jwt accessToken을 생성
6. [API] /auth/google 에서 refreshToken과 accessToken을 반환, 첫 로그인일시 회원정보 기입 페이지로 이동
7. [UI] accessToken과 refreshToken 로컬스토리지에 저장
8. [UI] 회원정보 기입, 완료후 저장 누를 시 사용 페이지로 이동

accessToken 재발급 flow
1. [UI] POST /accessToken 으로 refreshToken 담아 요청
2. [API] DB에서 refreshToken 확인, 올바르지 않은 토큰일 경우 401 에러 반환
3. [API] 올바른 refreshToken일시 새로운 refreshToken과 accessToken반환
4. [UI] refreshToken과 accessToken 로컬스토리지에 저장, accessToken을 기존과 동일하게 사용

#### 확인사항

refreshToken조차 만료되었을 시, 혹은 다른 컴퓨터에서 다시 social login실행 시 이상 없는지 확인
- authorization server에서 받은 이메일로 이미 일치하는 유저/트레이너가 있는지 확인하면 될것으로 판단

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.