global key detect
This commit is contained in:
@@ -13,9 +13,20 @@ from app.services.settings_service import settings_service
|
||||
router = APIRouter()
|
||||
|
||||
|
||||
def serialize_router(router: Router, global_ssh_key: str | None = None) -> RouterResponse:
|
||||
has_router_key = bool((router.ssh_key or '').strip())
|
||||
has_global_key = bool((global_ssh_key or '').strip())
|
||||
payload = RouterResponse.model_validate(router, from_attributes=True).model_dump()
|
||||
payload['uses_global_ssh_key'] = has_global_key and not has_router_key
|
||||
payload['has_effective_ssh_key'] = has_router_key or has_global_key
|
||||
return RouterResponse.model_validate(payload)
|
||||
|
||||
|
||||
@router.get("", response_model=list[RouterResponse])
|
||||
def list_routers(current_user: User = Depends(get_current_user), db: Session = Depends(get_db)):
|
||||
return db.query(Router).filter(Router.owner_id == current_user.id).order_by(Router.created_at.desc()).all()
|
||||
settings = settings_service.get_or_create(db)
|
||||
routers = db.query(Router).filter(Router.owner_id == current_user.id).order_by(Router.created_at.desc()).all()
|
||||
return [serialize_router(router, settings.global_ssh_key) for router in routers]
|
||||
|
||||
|
||||
@router.post("", response_model=RouterResponse)
|
||||
@@ -24,7 +35,8 @@ def create_router(payload: RouterCreate, current_user: User = Depends(get_curren
|
||||
db.add(router)
|
||||
db.commit()
|
||||
db.refresh(router)
|
||||
return router
|
||||
settings = settings_service.get_or_create(db)
|
||||
return serialize_router(router, settings.global_ssh_key)
|
||||
|
||||
|
||||
@router.get("/{router_id}", response_model=RouterResponse)
|
||||
@@ -32,7 +44,8 @@ def get_router(router_id: int, current_user: User = Depends(get_current_user), d
|
||||
router = db.query(Router).filter(Router.id == router_id, Router.owner_id == current_user.id).first()
|
||||
if not router:
|
||||
raise HTTPException(status_code=404, detail="Router not found")
|
||||
return router
|
||||
settings = settings_service.get_or_create(db)
|
||||
return serialize_router(router, settings.global_ssh_key)
|
||||
|
||||
|
||||
@router.put("/{router_id}", response_model=RouterResponse)
|
||||
@@ -45,7 +58,8 @@ def update_router(router_id: int, payload: RouterUpdate, current_user: User = De
|
||||
db.add(router)
|
||||
db.commit()
|
||||
db.refresh(router)
|
||||
return router
|
||||
settings = settings_service.get_or_create(db)
|
||||
return serialize_router(router, settings.global_ssh_key)
|
||||
|
||||
|
||||
@router.delete("/{router_id}")
|
||||
|
||||
@@ -38,6 +38,8 @@ class RouterUpdate(BaseModel):
|
||||
class RouterResponse(RouterBase):
|
||||
id: int
|
||||
owner_id: int
|
||||
uses_global_ssh_key: bool = False
|
||||
has_effective_ssh_key: bool = False
|
||||
last_connection_status: bool | None = None
|
||||
last_connection_tested_at: datetime | None = None
|
||||
last_connection_error: str | None = None
|
||||
|
||||
Reference in New Issue
Block a user