Co-authored-by: Michael Chihlas <michael@resolutionflow.com> Co-committed-by: Michael Chihlas <michael@resolutionflow.com>
41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
"""Public runtime configuration endpoint.
|
|
|
|
GET /api/v1/config/public
|
|
Returns the small set of runtime flags the frontend needs at app load
|
|
to decide whether to render the self-serve signup flow and which OAuth
|
|
buttons to show. No authentication required.
|
|
|
|
The response model lives in `app.schemas.config` so it can be reused by
|
|
frontend codegen and other call sites if needed.
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
from fastapi import APIRouter
|
|
|
|
from app.core.config import settings
|
|
from app.schemas.config import PublicConfigResponse
|
|
|
|
router = APIRouter(prefix="/config", tags=["config"])
|
|
|
|
|
|
@router.get("/public", response_model=PublicConfigResponse)
|
|
async def get_public_config() -> PublicConfigResponse:
|
|
"""Return public-safe runtime config.
|
|
|
|
`oauth_providers` reflects which OAuth client IDs are configured server
|
|
side; the frontend uses it to render only buttons that will actually
|
|
succeed. `self_serve_enabled` is the master switch for the new public
|
|
self-serve signup flow.
|
|
"""
|
|
providers: list[str] = []
|
|
if settings.GOOGLE_CLIENT_ID:
|
|
providers.append("google")
|
|
if settings.MS_CLIENT_ID:
|
|
providers.append("microsoft")
|
|
|
|
return PublicConfigResponse(
|
|
self_serve_enabled=settings.SELF_SERVE_ENABLED,
|
|
oauth_providers=providers,
|
|
)
|