feat: show token in member response, revoke endpoint
Some checks failed
Deploy Tracker / deploy (push) Failing after 0s
Some checks failed
Deploy Tracker / deploy (push) Failing after 0s
This commit is contained in:
parent
e8de6af512
commit
544745de61
@ -78,6 +78,8 @@ def _member_to_out(m: Member) -> dict:
|
|||||||
"status": m.status,
|
"status": m.status,
|
||||||
"avatar_url": m.avatar_url,
|
"avatar_url": m.avatar_url,
|
||||||
}
|
}
|
||||||
|
if m.type == "agent":
|
||||||
|
d["token"] = m.token
|
||||||
if m.agent_config:
|
if m.agent_config:
|
||||||
d["agent_config"] = AgentConfigSchema(
|
d["agent_config"] = AgentConfigSchema(
|
||||||
capabilities=m.agent_config.capabilities or [],
|
capabilities=m.agent_config.capabilities or [],
|
||||||
@ -213,6 +215,21 @@ async def regenerate_token(slug: str, db: AsyncSession = Depends(get_db)):
|
|||||||
return {"token": token}
|
return {"token": token}
|
||||||
|
|
||||||
|
|
||||||
|
@router.post("/members/{slug}/revoke-token")
|
||||||
|
async def revoke_token(slug: str, db: AsyncSession = Depends(get_db)):
|
||||||
|
result = await db.execute(
|
||||||
|
select(Member).where(Member.slug == slug)
|
||||||
|
)
|
||||||
|
member = result.scalar_one_or_none()
|
||||||
|
if not member:
|
||||||
|
raise HTTPException(404, "Member not found")
|
||||||
|
if member.type != "agent":
|
||||||
|
raise HTTPException(400, "Only agent tokens can be revoked")
|
||||||
|
member.token = None
|
||||||
|
await db.commit()
|
||||||
|
return {"ok": True}
|
||||||
|
|
||||||
|
|
||||||
@router.patch("/members/me/status")
|
@router.patch("/members/me/status")
|
||||||
async def update_my_status(status: str, db: AsyncSession = Depends(get_db)):
|
async def update_my_status(status: str, db: AsyncSession = Depends(get_db)):
|
||||||
"""Quick status update (used by agents)."""
|
"""Quick status update (used by agents)."""
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user