fix(schedule-type): accept X-API-Key for CRUD

The /schedule-types/ router was the last surface still gated on
get_current_user (JWT-only). The companion special-slot router
(PR #18) used get_current_user_or_apikey, so the admin flow was:

  * create a schedule_type → DB direct insert (cli can't reach it)
  * add special slot via API → works

Swaps all 5 CRUD endpoints (list / create / patch / delete /
assign-agent) to get_current_user_or_apikey so the same hzhang
admin api_key that works for special-slot creation now works for
schedule_type creation too. /schedule-types/agent/me already uses
X-Agent-ID headers (not user auth), so no change there.

Existing JWT callers are unaffected — get_current_user_or_apikey
tries api_key first then falls back to JWT.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
h z
2026-05-22 19:35:56 +01:00
parent 7017d3483e
commit 23632aa073

View File

@@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
from typing import List
from app.core.config import get_db
from app.api.deps import get_current_user
from app.api.deps import get_current_user_or_apikey
from app.models.models import User
from app.models.agent import Agent
from app.models.schedule_type import ScheduleType
@@ -68,7 +68,7 @@ def _require_schedule_manage(db: Session, user: User) -> User:
)
def list_schedule_types(
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
current_user: User = Depends(get_current_user_or_apikey),
):
_require_schedule_read(db, current_user)
return db.query(ScheduleType).all()
@@ -82,7 +82,7 @@ def list_schedule_types(
def create_schedule_type(
payload: ScheduleTypeCreate,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
current_user: User = Depends(get_current_user_or_apikey),
):
_require_schedule_manage(db, current_user)
@@ -112,7 +112,7 @@ def update_schedule_type(
schedule_type_id: int,
payload: ScheduleTypeUpdate,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
current_user: User = Depends(get_current_user_or_apikey),
):
_require_schedule_manage(db, current_user)
@@ -135,7 +135,7 @@ def update_schedule_type(
def delete_schedule_type(
schedule_type_id: int,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
current_user: User = Depends(get_current_user_or_apikey),
):
_require_schedule_manage(db, current_user)
@@ -192,7 +192,7 @@ def assign_schedule_type(
agent_id: str,
payload: AgentScheduleTypeAssign,
db: Session = Depends(get_db),
current_user: User = Depends(get_current_user),
current_user: User = Depends(get_current_user_or_apikey),
):
_require_schedule_manage(db, current_user)