diff --git a/backend/auth.py b/backend/auth.py index 3727457..34eab43 100644 --- a/backend/auth.py +++ b/backend/auth.py @@ -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") # 읽기 전용 역할 포함 diff --git a/backend/routers/auth_router.py b/backend/routers/auth_router.py index eb1c488..236a3a0 100644 --- a/backend/routers/auth_router.py +++ b/backend/routers/auth_router.py @@ -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, diff --git a/frontend/static/js/auth.js b/frontend/static/js/auth.js index 067ccde..fe72959 100644 --- a/frontend/static/js/auth.js +++ b/frontend/static/js/auth.js @@ -75,7 +75,7 @@ const Auth = (() => { pending_approval: '승인대기', pending: '접수', in_progress: '처리중', done: '완료', waiting: '부품대기', revisit: '재방문', closed: '상황종료', registered: '등록', reviewing: '검토중', developing: '개발중', - deployed: '배포완료', + deployed: '배포완료', observer: '옵저버', }; return `${map[status] || status}`; } diff --git a/frontend/static/pages/admin/accounts.html b/frontend/static/pages/admin/accounts.html index 5b5e812..ce71998 100644 --- a/frontend/static/pages/admin/accounts.html +++ b/frontend/static/pages/admin/accounts.html @@ -55,6 +55,7 @@