Skip to content

Commit 63e9f8b

Browse files
committed
Accept AUTHENTIK_TOKEN_FILE
Prevents passing secrets as environment variables
1 parent 567f7aa commit 63e9f8b

1 file changed

Lines changed: 16 additions & 2 deletions

File tree

main.py

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
from fastapi import FastAPI, HTTPException, WebSocket, WebSocketDisconnect
1010
from fastapi_utilities import repeat_every
11-
from pydantic import AliasPath, BaseModel, Field, field_validator
11+
from pydantic import AliasPath, BaseModel, Field, field_validator, model_validator
1212
from pydantic_core import PydanticUseDefault
1313
from pydantic_settings import BaseSettings
1414

@@ -54,7 +54,21 @@ def use_default_for_missing_cards(cls, v) -> str:
5454

5555

5656
class Settings(BaseSettings):
57-
authentik_token: str = ...
57+
authentik_token: str | None = None
58+
authentik_token_file: str | None = None
59+
60+
@model_validator(mode='after')
61+
def set_token(self) -> "Settings":
62+
if self.authentik_token:
63+
return self
64+
if self.authentik_token_file:
65+
try:
66+
with open(self.authentik_token_file) as f:
67+
self.authentik_token = f.read().strip()
68+
except FileNotFoundError:
69+
raise ValueError(f"Token file not found: {self.authentik_token_file}")
70+
return self
71+
raise ValueError("Either AUTHENTIK_TOKEN or AUTHENTIK_TOKEN_FILE must be set")
5872

5973

6074
config = Settings()

0 commit comments

Comments
 (0)