User Log and Persistent Faction Information
This commit is contained in:
52
routers/activity.py
Normal file
52
routers/activity.py
Normal file
@@ -0,0 +1,52 @@
|
||||
"""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"}
|
||||
Reference in New Issue
Block a user