Fix account url, use template for settings

This commit is contained in:
phil 2025-01-26 23:37:56 +01:00
parent dc93c7c05b
commit 5b6c6f1aac
3 changed files with 30 additions and 14 deletions
src/oidc_test

View file

@ -11,6 +11,9 @@ from pydantic_settings import (
PydanticBaseSettingsSource,
YamlConfigSettingsSource,
)
from starlette.requests import Request
from .models import User
class Resource(BaseModel):
@ -32,7 +35,7 @@ class OIDCProvider(BaseModel):
code_challenge_method: str | None = None
hint: str = "No hint"
resources: list[Resource] = []
account_url_suffix: str | None = None
account_url_template: str | None = None
@computed_field
@property
@ -44,11 +47,19 @@ class OIDCProvider(BaseModel):
def token_url(self) -> str:
return "auth/" + self.id
@computed_field
@property
def account_url(self) -> str | None:
if self.account_url_suffix:
return self.url + self.account_url_suffix
def get_account_url(self, request: Request, user: User) -> str | None:
if self.account_url_template:
if not (
self.url.endswith("/") or self.account_url_template.startswith("/")
):
sep = "/"
else:
sep = ""
return (
self.url
+ sep
+ self.account_url_template.format(request=request, user=user)
)
else:
return None