사용자 기능 (User, Auth) - fitpassTeam/fitpass GitHub Wiki
User, Auth
개요
FitPass의 사용자 관리 시스템은 3단계 권한 체계와 JWT 기반 인증을 통해 안전하고 유연한 사용자 경험을 제공합니다.
UserRole
권한 | 역할 | 주요 기능 |
---|---|---|
USER | 일반 사용자 | PT 예약, 멤버십 구매, 커뮤니티 참여 |
OWNER | 헬스장 사장 | 헬스장 관리, 트레이너 등록, 이용권 판매 |
ADMIN | 시스템 관리자 | 전체 시스템 관리, 승인 처리, 포인트 관리 |
권한 승급 프로세스
USER 가입 → OWNER 신청 → ADMIN 승인 → OWNER 권한 획득
회원가입 및 로그인
일반 회원가입
필수 정보
- 이메일 (중복 확인)
- 비밀번호 (BCrypt 암호화)
- 이름, 전화번호, 나이, 주소, 성별
회원가입 프로세스
- 입력 데이터 유효성 검증
- 이메일 중복 확인
- 비밀번호 암호화 (BCrypt)
- USER 권한으로 계정 생성
OAuth2 소셜 로그인
지원 플랫폼
- Naver
소셜 로그인 프로세스
- OAuth2 Provider 인증
- 사용자 정보 수신
- 기존 계정 연동 또는 신규 생성
- JWT 토큰 발급
로그인 처리
일반 로그인
- 이메일/비밀번호 검증
- JWT 토큰 발급 (Access + Refresh)
- Redis에 Refresh Token 저장
JWT 인증 시스템
토큰 구조
Access Token
- 유효기간: 30분
- 용도: API 요청 인증
- 저장위치: 클라이언트 메모리
Refresh Token
- 유효기간: 7일
- 용도: Access Token 재발급
- 저장위치: Redis (서버), HttpOnly Cookie (클라이언트)
토큰 생명주기
로그인 → JWT 발급 → API 요청 → 토큰 검증 → 만료시 재발급 → 로그아웃 시 무효화
프로필 관리
수정 가능한 정보
- 프로필 이미지 (AWS S3 업로드)
- 개인정보 (이름, 나이, 주소)
- 전화번호
- 비밀번호 (기존 비밀번호 확인 필요)
프로필 이미지 업로드
프로세스
- 클라이언트에서 이미지 선택
- 서버에서 파일 유효성 검증
- AWS S3 업로드
- 기존 이미지 삭제
- 새 이미지 URL DB 저장
API 명세
인증 관련
Method | Endpoint | 설명 | 권한 |
---|---|---|---|
POST | /auth/signup |
회원가입 | Public |
POST | /auth/login |
로그인 | Public |
POST | /auth/logout |
로그아웃 | Authenticated |
POST | /auth/reissue |
토큰 재발급 | Public |
사용자 관리
Method | Endpoint | 설명 | 권한 |
---|---|---|---|
GET | /users/me |
내 정보 조회 | USER+ |
PUT | /users/me |
내 정보 수정 | USER+ |
PATCH | /users/me/profile-image |
프로필 이미지 변경 | USER+ |
PATCH | /users/me/password |
비밀번호 변경 | USER+ |
POST | /users/me/upgrade-to-owner |
OWNER 승급 신청 | USER |
응답 형태
성공 응답
{
"statusCode": 200,
"message": "성공 메시지",
"data": { /* 응답 데이터 */ }
}
** 에러 응답 **
{
"statusCode": 400,
"message": "에러 메시지",
"data": null
}
비밀번호 보안
- 암호화: BCrypt (cost=10)
- 정책: 최소 8자, 영문+숫자+특수문자 조합
- 변경: 기존 비밀번호 확인 후 변경
세션 보안
- 토큰 만료: 자동 만료 처리
- 중복 로그인: 기존 세션 무효화
- 브루트포스 방지: 로그인 시도 제한