Fix PocketID callback URL to use full base URL
Build and push images / validate (push) Successful in 2s
Build and push images / build-backend (push) Successful in 6s
Build and push images / build-worker (push) Successful in 4s
Build and push images / build-frontend (push) Successful in 5s

This commit is contained in:
2026-06-06 19:43:26 +01:00
parent 16cf4a9313
commit 34284f3d9d
2 changed files with 6 additions and 11 deletions
+2 -2
View File
@@ -77,7 +77,7 @@ async def pocketid_login_url(db: AsyncSession = Depends(get_db)):
from urllib.parse import urlencode from urllib.parse import urlencode
params = { params = {
"client_id": client_id, "client_id": client_id,
"redirect_uri": "/api/auth/pocketid/callback", "redirect_uri": f"{settings.base_url}/api/auth/pocketid/callback",
"response_type": "code", "response_type": "code",
"scope": "openid profile email", "scope": "openid profile email",
} }
@@ -94,7 +94,7 @@ async def pocketid_callback(code: str, db: AsyncSession = Depends(get_db)):
resp = await client.post( resp = await client.post(
f"{issuer}/token", f"{issuer}/token",
data={"grant_type": "authorization_code", "code": code, data={"grant_type": "authorization_code", "code": code,
"redirect_uri": "/api/auth/pocketid/callback", "redirect_uri": f"{settings.base_url}/api/auth/pocketid/callback",
"client_id": client_id, "client_secret": client_secret}, "client_id": client_id, "client_secret": client_secret},
) )
if resp.status_code != 200: if resp.status_code != 200:
+4 -9
View File
@@ -6,28 +6,23 @@ from typing import Optional
class Settings(BaseSettings): class Settings(BaseSettings):
# Database # Database
database_url: str = Field(..., env="DATABASE_URL") database_url: str = Field(..., env="DATABASE_URL")
# Redis # Redis
redis_url: str = Field("redis://localhost:6379/0", env="REDIS_URL") redis_url: str = Field("redis://localhost:6379/0", env="REDIS_URL")
# Auth # Auth
secret_key: str = Field(..., env="SECRET_KEY") secret_key: str = Field(..., env="SECRET_KEY")
algorithm: str = "HS256" algorithm: str = "HS256"
access_token_expire_minutes: int = 60 * 24 * 7 # 7 days access_token_expire_minutes: int = 60 * 24 * 7 # 7 days
# Admin account
# Admin account - optional so the worker (which doesn't seed users) can start
# without it. The backend service checks this at seed time.
admin_username: str = Field("admin", env="ADMIN_USERNAME") admin_username: str = Field("admin", env="ADMIN_USERNAME")
admin_password: Optional[str] = Field(None, env="ADMIN_PASSWORD") admin_password: Optional[str] = Field(None, env="ADMIN_PASSWORD")
# Base URL - used for OAuth callbacks
base_url: str = Field("https://milevault.jarrett.eu", env="BASE_URL")
# PocketID OIDC (optional) # PocketID OIDC (optional)
pocketid_issuer: Optional[str] = Field(None, env="POCKETID_ISSUER") pocketid_issuer: Optional[str] = Field(None, env="POCKETID_ISSUER")
pocketid_client_id: Optional[str] = Field(None, env="POCKETID_CLIENT_ID") pocketid_client_id: Optional[str] = Field(None, env="POCKETID_CLIENT_ID")
pocketid_client_secret: Optional[str] = Field(None, env="POCKETID_CLIENT_SECRET") pocketid_client_secret: Optional[str] = Field(None, env="POCKETID_CLIENT_SECRET")
# Files # Files
file_store_path: str = Field("/data/files", env="FILE_STORE_PATH") file_store_path: str = Field("/data/files", env="FILE_STORE_PATH")
# Environment # Environment
environment: str = Field("production", env="ENVIRONMENT") environment: str = Field("production", env="ENVIRONMENT")
@@ -36,4 +31,4 @@ class Settings(BaseSettings):
case_sensitive = False case_sensitive = False
settings = Settings() settings = Settings()