기능 추가 — 옵저버 계정 및 현황 조회 포털
읽기 전용 옵저버 역할 추가. 신고 현황 확인만 가능하며 모든 쓰기 동작 차단. - auth.py: require_viewer(admin+observer) 의존성 추가 - auth_router.py: register 엔드포인트에 role 파라미터 추가 (mechanic/observer) - login.html: 회원가입 시 정비사/옵저버 역할 카드 선택 UI, 역할별 안내문구 - 로그인 후 observer → /pages/observer/dashboard.html 라우팅 - observer/dashboard.html: 통계 카드(상태별 건수) + 신고 현황 테이블(읽기전용) - observer/reports.html: 상태·충전기ID·충전소명 필터 신고 목록 - accounts.html: 옵저버 필터·생성·승인 대기 역할 표시 추가 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -84,6 +84,7 @@ def require_role(*roles):
|
||||
return current_user
|
||||
return checker
|
||||
|
||||
require_admin = require_role("admin")
|
||||
require_mechanic = require_role("mechanic", "admin")
|
||||
require_admin = require_role("admin")
|
||||
require_mechanic = require_role("mechanic", "admin")
|
||||
require_manufacturer = require_role("manufacturer", "admin")
|
||||
require_viewer = require_role("admin", "observer") # 읽기 전용 역할 포함
|
||||
|
||||
@@ -35,14 +35,17 @@ def register(
|
||||
name: str = Form(...),
|
||||
phone: str = Form(""),
|
||||
company: str = Form(""),
|
||||
role: str = Form("mechanic"), # mechanic | observer
|
||||
db: Session = Depends(get_db)
|
||||
):
|
||||
if role not in ("mechanic", "observer"):
|
||||
role = "mechanic"
|
||||
if db.query(models.User).filter_by(username=username).first():
|
||||
raise HTTPException(400, "이미 사용 중인 아이디입니다.")
|
||||
user = models.User(
|
||||
username=username,
|
||||
password_hash=hash_password(password),
|
||||
role="mechanic",
|
||||
role=role,
|
||||
name=name,
|
||||
phone=phone or None,
|
||||
company=company or None,
|
||||
|
||||
Reference in New Issue
Block a user