Switch access control from groups to realm roles
This commit is contained in:
@@ -35,6 +35,8 @@ class Settings(BaseSettings):
|
||||
public_frontend_origins: Annotated[list[str], NoDecode] = ["https://member.ose.tw"]
|
||||
internal_shared_secret: str = ""
|
||||
admin_required_groups: Annotated[list[str], NoDecode] = []
|
||||
member_required_realm_roles: Annotated[list[str], NoDecode] = ["admin", "manager"]
|
||||
admin_required_realm_roles: Annotated[list[str], NoDecode] = ["admin", "manager"]
|
||||
cache_backend: str = "memory"
|
||||
cache_redis_url: str = "redis://127.0.0.1:6379/0"
|
||||
cache_prefix: str = "memberapi"
|
||||
@@ -58,6 +60,15 @@ class Settings(BaseSettings):
|
||||
return []
|
||||
return [part.strip() for part in value.split(",") if part.strip()]
|
||||
|
||||
@field_validator("member_required_realm_roles", "admin_required_realm_roles", mode="before")
|
||||
@classmethod
|
||||
def parse_roles_csv(cls, value: str | list[str]) -> list[str]:
|
||||
if isinstance(value, list):
|
||||
return [str(v).strip() for v in value if str(v).strip()]
|
||||
if not value:
|
||||
return []
|
||||
return [part.strip() for part in value.split(",") if part.strip()]
|
||||
|
||||
@property
|
||||
def database_url(self) -> str:
|
||||
return (
|
||||
|
||||
Reference in New Issue
Block a user