Kansho/backend/routers/subscription.py

30 lines
1.0 KiB
Python

from __future__ import annotations
from fastapi import APIRouter, Depends, HTTPException
from auth import require_admin_dep, require_auth
from db import get_db, row_to_dict
from entitlements import EntitlementError, check_feature_access, subscription_for
router = APIRouter(prefix="/api", tags=["subscription"])
@router.get("/subscription")
def get_subscription(session: dict = Depends(require_auth)):
return subscription_for(session["profile_id"])
@router.get("/features")
def list_features(session: dict = Depends(require_admin_dep)):
with get_db() as conn:
rows = conn.execute("SELECT * FROM features ORDER BY id").fetchall()
return [row_to_dict(row) for row in rows]
@router.get("/features/{feature_id}/access")
def feature_access(feature_id: str, session: dict = Depends(require_auth)):
try:
return check_feature_access(session["profile_id"], feature_id)
except EntitlementError as exc:
raise HTTPException(status_code=exc.status_code, detail={"code": exc.code, "message": exc.message}) from exc