작업 내용
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, .env의 ADMIN_JWT_SECRET 사용
get_current_admin() / require_owner() FastAPI Depends 작성 (문서에 전체 코드 있음) —
이후 모든 /api/admin/* 라우터가 dependencies=[Depends(get_current_admin)]로 이 함수를 사용
- 앱 시작 시 관리자 계정이 하나도 없으면
.env의 ADMIN_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 |
완료 기준
참고
docs/백엔드_기능명세.md Module A (전체 코드 스니펫 포함). 선행 조건: #20(AdminUser 테이블).
작업 내용
docs/백엔드_기능명세.mdModule 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.pypasslib[bcrypt]python-jose,.env의ADMIN_JWT_SECRET사용get_current_admin()/require_owner()FastAPI Depends 작성 (문서에 전체 코드 있음) —이후 모든
/api/admin/*라우터가dependencies=[Depends(get_current_admin)]로 이 함수를 사용.env의ADMIN_BOOTSTRAP_USERNAME/PASSWORD로OWNER 계정 자동 생성 (
admin_seed.py)API
/api/admin/auth/loginLoginOut(access_token, token_type, expires_in)/api/admin/auth/logout{ok: true}/api/admin/auth/meAdminMeOut완료 기준
/api/admin/*호출 시 401/api/admin/auth/me호출 시 본인 정보 정확히 반환참고
docs/백엔드_기능명세.mdModule A (전체 코드 스니펫 포함). 선행 조건: #20(AdminUser 테이블).