40 lines
1.0 KiB
Python
40 lines
1.0 KiB
Python
"""Admin routes for the application."""
|
|
|
|
from flask import Blueprint
|
|
|
|
from app.services.decorators import get_current_user, require_auth, require_role
|
|
from app.services.scheduler_service import scheduler_service
|
|
|
|
bp = Blueprint("admin", __name__)
|
|
|
|
|
|
@bp.route("/")
|
|
@require_auth
|
|
@require_role("admin")
|
|
def admin_only() -> dict[str, str]:
|
|
"""Admin-only endpoint to demonstrate role-based access."""
|
|
user = get_current_user()
|
|
return {
|
|
"message": f"Hello admin {user['name']}, you have admin access!",
|
|
"user": user,
|
|
"admin_info": "This endpoint is only accessible to admin users",
|
|
}
|
|
|
|
|
|
@bp.route("/scheduler/status")
|
|
@require_auth
|
|
@require_role("admin")
|
|
def scheduler_status() -> dict:
|
|
"""Get scheduler status (admin only)."""
|
|
return scheduler_service.get_scheduler_status()
|
|
|
|
|
|
@bp.route("/credits/refill", methods=["POST"])
|
|
@require_auth
|
|
@require_role("admin")
|
|
def manual_credit_refill() -> dict:
|
|
"""Manually trigger credit refill for all users (admin only)."""
|
|
return scheduler_service.trigger_credit_refill_now()
|
|
|
|
|