Files

53 lines
1.5 KiB
Python

"""Activity log endpoints."""
from fastapi import APIRouter, Request
from pydantic import BaseModel
from utils.auth import get_current_user
from services.activity_log import activity_logger
router = APIRouter(prefix="/api", tags=["activity"])
class LogActionRequest(BaseModel):
action: str
details: str = ""
@router.get("/active_users")
async def get_active_users(request: Request):
"""Get list of currently active users"""
# Update current user's activity
try:
user_info = get_current_user(request)
username = user_info.get("username", "Unknown")
await activity_logger.update_user_activity(username)
except:
pass
users = await activity_logger.get_active_users(timeout_minutes=30)
return {"users": users}
@router.get("/activity_logs")
async def get_activity_logs(request: Request, limit: int = 100):
"""Get recent activity logs"""
# Update current user's activity
try:
user_info = get_current_user(request)
username = user_info.get("username", "Unknown")
await activity_logger.update_user_activity(username)
except:
pass
logs = await activity_logger.get_logs(limit=limit)
return {"logs": logs}
@router.post("/log_action")
async def log_action(request: Request, req: LogActionRequest):
"""Log a user action"""
user_info = get_current_user(request)
username = user_info.get("username", "Unknown")
await activity_logger.log_action(username, req.action, req.details)
return {"status": "ok"}