사용자 기능 (User, Auth) - fitpassTeam/fitpass GitHub Wiki

User, Auth

개요

FitPass의 사용자 관리 시스템은 3단계 권한 체계와 JWT 기반 인증을 통해 안전하고 유연한 사용자 경험을 제공합니다.

UserRole

권한 역할 주요 기능
USER 일반 사용자 PT 예약, 멤버십 구매, 커뮤니티 참여
OWNER 헬스장 사장 헬스장 관리, 트레이너 등록, 이용권 판매
ADMIN 시스템 관리자 전체 시스템 관리, 승인 처리, 포인트 관리

권한 승급 프로세스

USER 가입 → OWNER 신청 → ADMIN 승인 → OWNER 권한 획득

회원가입 및 로그인

일반 회원가입

필수 정보

  • 이메일 (중복 확인)
  • 비밀번호 (BCrypt 암호화)
  • 이름, 전화번호, 나이, 주소, 성별

회원가입 프로세스

  1. 입력 데이터 유효성 검증
  2. 이메일 중복 확인
  3. 비밀번호 암호화 (BCrypt)
  4. USER 권한으로 계정 생성

OAuth2 소셜 로그인

지원 플랫폼

  • Google
  • Naver

소셜 로그인 프로세스

  1. OAuth2 Provider 인증
  2. 사용자 정보 수신
  3. 기존 계정 연동 또는 신규 생성
  4. JWT 토큰 발급

로그인 처리

일반 로그인

  1. 이메일/비밀번호 검증
  2. JWT 토큰 발급 (Access + Refresh)
  3. Redis에 Refresh Token 저장

JWT 인증 시스템

토큰 구조

Access Token

  • 유효기간: 30분
  • 용도: API 요청 인증
  • 저장위치: 클라이언트 메모리

Refresh Token

  • 유효기간: 7일
  • 용도: Access Token 재발급
  • 저장위치: Redis (서버), HttpOnly Cookie (클라이언트)

토큰 생명주기

로그인 → JWT 발급 → API 요청 → 토큰 검증 → 만료시 재발급 → 로그아웃 시 무효화

프로필 관리

수정 가능한 정보

  • 프로필 이미지 (AWS S3 업로드)
  • 개인정보 (이름, 나이, 주소)
  • 전화번호
  • 비밀번호 (기존 비밀번호 확인 필요)

프로필 이미지 업로드

프로세스

  1. 클라이언트에서 이미지 선택
  2. 서버에서 파일 유효성 검증
  3. AWS S3 업로드
  4. 기존 이미지 삭제
  5. 새 이미지 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자, 영문+숫자+특수문자 조합
  • 변경: 기존 비밀번호 확인 후 변경

세션 보안

  • 토큰 만료: 자동 만료 처리
  • 중복 로그인: 기존 세션 무효화
  • 브루트포스 방지: 로그인 시도 제한