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:
@@ -9,7 +9,7 @@ from sqlalchemy.orm import Session
|
|||||||
from typing import List
|
from typing import List
|
||||||
|
|
||||||
from app.core.config import get_db
|
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.models import User
|
||||||
from app.models.agent import Agent
|
from app.models.agent import Agent
|
||||||
from app.models.schedule_type import ScheduleType
|
from app.models.schedule_type import ScheduleType
|
||||||
@@ -68,7 +68,7 @@ def _require_schedule_manage(db: Session, user: User) -> User:
|
|||||||
)
|
)
|
||||||
def list_schedule_types(
|
def list_schedule_types(
|
||||||
db: Session = Depends(get_db),
|
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)
|
_require_schedule_read(db, current_user)
|
||||||
return db.query(ScheduleType).all()
|
return db.query(ScheduleType).all()
|
||||||
@@ -82,7 +82,7 @@ def list_schedule_types(
|
|||||||
def create_schedule_type(
|
def create_schedule_type(
|
||||||
payload: ScheduleTypeCreate,
|
payload: ScheduleTypeCreate,
|
||||||
db: Session = Depends(get_db),
|
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)
|
_require_schedule_manage(db, current_user)
|
||||||
|
|
||||||
@@ -112,7 +112,7 @@ def update_schedule_type(
|
|||||||
schedule_type_id: int,
|
schedule_type_id: int,
|
||||||
payload: ScheduleTypeUpdate,
|
payload: ScheduleTypeUpdate,
|
||||||
db: Session = Depends(get_db),
|
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)
|
_require_schedule_manage(db, current_user)
|
||||||
|
|
||||||
@@ -135,7 +135,7 @@ def update_schedule_type(
|
|||||||
def delete_schedule_type(
|
def delete_schedule_type(
|
||||||
schedule_type_id: int,
|
schedule_type_id: int,
|
||||||
db: Session = Depends(get_db),
|
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)
|
_require_schedule_manage(db, current_user)
|
||||||
|
|
||||||
@@ -192,7 +192,7 @@ def assign_schedule_type(
|
|||||||
agent_id: str,
|
agent_id: str,
|
||||||
payload: AgentScheduleTypeAssign,
|
payload: AgentScheduleTypeAssign,
|
||||||
db: Session = Depends(get_db),
|
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)
|
_require_schedule_manage(db, current_user)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user