- Unified google vein with OAuth + Sheets API - Prefixed vein module loading (vein_google) to avoid pip package shadowing - Preload pip packages before vein loading - Added common/auth framework - Rebranded sbwrapper from Pawprint to Soleprint - Removed cfg/ from history (now separate repo) - Keep cfg/standalone/ as sample configuration - gitignore cfg/amar/ and cfg/dlt/ (private configs)
44 lines
1013 B
Python
44 lines
1013 B
Python
"""
|
|
Authentication configuration.
|
|
|
|
Generic config that works with any provider vein.
|
|
"""
|
|
|
|
from typing import Optional
|
|
|
|
from pydantic import BaseModel
|
|
|
|
|
|
class AuthConfig(BaseModel):
|
|
"""Authentication configuration for a room."""
|
|
|
|
enabled: bool = False
|
|
provider: str = "google" # Vein name to use for auth
|
|
allowed_domains: list[str] = [] # Empty = allow any domain
|
|
session_secret: str = "" # Required if enabled, can be "ENV:VAR_NAME"
|
|
session_timeout_hours: int = 24
|
|
login_redirect: str = "/"
|
|
public_routes: list[str] = [
|
|
"/health",
|
|
"/auth/login",
|
|
"/auth/callback",
|
|
"/auth/logout",
|
|
]
|
|
|
|
|
|
def load_auth_config(config: dict) -> Optional[AuthConfig]:
|
|
"""
|
|
Load auth config from room config.json.
|
|
|
|
Returns None if auth is not enabled.
|
|
"""
|
|
auth_data = config.get("auth")
|
|
if not auth_data:
|
|
return None
|
|
|
|
auth_config = AuthConfig(**auth_data)
|
|
if not auth_config.enabled:
|
|
return None
|
|
|
|
return auth_config
|