Fix account url, use template for settings
This commit is contained in:
parent
dc93c7c05b
commit
5b6c6f1aac
3 changed files with 30 additions and 14 deletions
src/oidc_test
|
@ -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
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue