Skip to content

[BE2-A] 관리자 인증 (로그인/JWT/권한) #22

Description

@yesung05

작업 내용

docs/백엔드_기능명세.md Module A 섹션 참고. 이후 모든 관리자 모듈(B/D/E/F/G/H)의 전제조건.

신규 파일: backend/core/security.py, backend/core/admin_seed.py,
backend/schemas/admin_auth_schemas.py, backend/dao/admin_dao.py, backend/api/admin/auth.py

  • 비밀번호 해시: passlib[bcrypt]
  • JWT 발급/검증: python-jose, .envADMIN_JWT_SECRET 사용
  • get_current_admin() / require_owner() FastAPI Depends 작성 (문서에 전체 코드 있음) —
    이후 모든 /api/admin/* 라우터가 dependencies=[Depends(get_current_admin)]로 이 함수를 사용
  • 앱 시작 시 관리자 계정이 하나도 없으면 .envADMIN_BOOTSTRAP_USERNAME/PASSWORD
    OWNER 계정 자동 생성 (admin_seed.py)

API

Method Path 응답
POST /api/admin/auth/login LoginOut (access_token, token_type, expires_in)
POST /api/admin/auth/logout {ok: true}
GET /api/admin/auth/me AdminMeOut

완료 기준

  • 잘못된 비밀번호로 로그인 시 401
  • 토큰 없이 /api/admin/* 호출 시 401
  • STAFF 권한으로 OWNER 전용 엔드포인트 호출 시 403
  • 토큰으로 /api/admin/auth/me 호출 시 본인 정보 정확히 반환

참고

docs/백엔드_기능명세.md Module A (전체 코드 스니펫 포함). 선행 조건: #20(AdminUser 테이블).

Metadata

Metadata

Assignees

Labels

admin관리자 화면/API 관련 작업phase2Phase 2: 백엔드 로직 보완 + 관리자 화면routerFastAPI 라우터

Type

No type

Fields

No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions