Spaces:
Sleeping
Sleeping
github-actions[bot] commited on
Commit ·
621eb30
1
Parent(s): d184320
Automated deployment from GitHub Actions: d7e5108ca3f706f8c0fdee788388c0ef9324152a
Browse files- src/auth/keycloak.py +6 -0
- src/config.py +5 -3
src/auth/keycloak.py
CHANGED
|
@@ -61,6 +61,12 @@ async def verify_keycloak_token(token: str) -> dict[str, Any]:
|
|
| 61 |
Returns the decoded payload (claims) on success.
|
| 62 |
Raises HTTP 401 on any failure.
|
| 63 |
"""
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 64 |
credentials_exception = HTTPException(
|
| 65 |
status_code=status.HTTP_401_UNAUTHORIZED,
|
| 66 |
detail="Could not validate credentials",
|
|
|
|
| 61 |
Returns the decoded payload (claims) on success.
|
| 62 |
Raises HTTP 401 on any failure.
|
| 63 |
"""
|
| 64 |
+
if settings.DISABLE_AUTH:
|
| 65 |
+
return {
|
| 66 |
+
"sub": "demo-bypass-user",
|
| 67 |
+
"realm_access": {"roles": ["operator", "admin", "supervisor", "sme"]},
|
| 68 |
+
}
|
| 69 |
+
|
| 70 |
credentials_exception = HTTPException(
|
| 71 |
status_code=status.HTTP_401_UNAUTHORIZED,
|
| 72 |
detail="Could not validate credentials",
|
src/config.py
CHANGED
|
@@ -38,12 +38,14 @@ class Settings(BaseSettings):
|
|
| 38 |
SUPABASE_SERVICE_KEY: SecretStr
|
| 39 |
SUPABASE_JWT_SECRET: SecretStr
|
| 40 |
|
|
|
|
|
|
|
| 41 |
# ── Keycloak 26 — SOLE auth provider (Invariant #4) ───────────────────────
|
| 42 |
-
KEYCLOAK_SERVER_URL: str
|
| 43 |
KEYCLOAK_REALM: str = "tradeflow"
|
| 44 |
KEYCLOAK_CLIENT_ID: str = "tradeflow-api"
|
| 45 |
-
KEYCLOAK_CLIENT_SECRET: SecretStr
|
| 46 |
-
KEYCLOAK_ISSUER: str
|
| 47 |
|
| 48 |
@property
|
| 49 |
def KEYCLOAK_JWKS_URL(self) -> str:
|
|
|
|
| 38 |
SUPABASE_SERVICE_KEY: SecretStr
|
| 39 |
SUPABASE_JWT_SECRET: SecretStr
|
| 40 |
|
| 41 |
+
DISABLE_AUTH: bool = False
|
| 42 |
+
|
| 43 |
# ── Keycloak 26 — SOLE auth provider (Invariant #4) ───────────────────────
|
| 44 |
+
KEYCLOAK_SERVER_URL: str = ""
|
| 45 |
KEYCLOAK_REALM: str = "tradeflow"
|
| 46 |
KEYCLOAK_CLIENT_ID: str = "tradeflow-api"
|
| 47 |
+
KEYCLOAK_CLIENT_SECRET: SecretStr = "" # type: ignore[assignment]
|
| 48 |
+
KEYCLOAK_ISSUER: str = ""
|
| 49 |
|
| 50 |
@property
|
| 51 |
def KEYCLOAK_JWKS_URL(self) -> str:
|