feat: make oauth config persist into config.json

This commit is contained in:
Jun Siang Cheah 2024-05-27 17:21:24 +01:00
parent 4a4e323a44
commit 06dbf59742

View File

@ -295,42 +295,125 @@ ENABLE_OAUTH_SIGNUP = PersistentConfig(
os.environ.get("ENABLE_OAUTH_SIGNUP", "False").lower() == "true", os.environ.get("ENABLE_OAUTH_SIGNUP", "False").lower() == "true",
) )
OAUTH_MERGE_ACCOUNTS_BY_EMAIL = PersistentConfig(
"OAUTH_MERGE_ACCOUNTS_BY_EMAIL",
"oauth.merge_accounts_by_email",
os.environ.get("OAUTH_MERGE_ACCOUNTS_BY_EMAIL", "False").lower() == "true",
)
OAUTH_PROVIDERS = {} OAUTH_PROVIDERS = {}
if os.environ.get("GOOGLE_CLIENT_ID") and os.environ.get("GOOGLE_CLIENT_SECRET"): GOOGLE_CLIENT_ID = PersistentConfig(
"GOOGLE_CLIENT_ID",
"oauth.google.client_id",
os.environ.get("GOOGLE_CLIENT_ID", ""),
)
GOOGLE_CLIENT_SECRET = PersistentConfig(
"GOOGLE_CLIENT_SECRET",
"oauth.google.client_secret",
os.environ.get("GOOGLE_CLIENT_SECRET", ""),
)
GOOGLE_OAUTH_SCOPE = PersistentConfig(
"GOOGLE_OAUTH_SCOPE",
"oauth.google.scope",
os.environ.get("GOOGLE_OAUTH_SCOPE", "openid email profile"),
)
MICROSOFT_CLIENT_ID = PersistentConfig(
"MICROSOFT_CLIENT_ID",
"oauth.microsoft.client_id",
os.environ.get("MICROSOFT_CLIENT_ID", ""),
)
MICROSOFT_CLIENT_SECRET = PersistentConfig(
"MICROSOFT_CLIENT_SECRET",
"oauth.microsoft.client_secret",
os.environ.get("MICROSOFT_CLIENT_SECRET", ""),
)
MICROSOFT_CLIENT_TENANT_ID = PersistentConfig(
"MICROSOFT_CLIENT_TENANT_ID",
"oauth.microsoft.tenant_id",
os.environ.get("MICROSOFT_CLIENT_TENANT_ID", ""),
)
MICROSOFT_OAUTH_SCOPE = PersistentConfig(
"MICROSOFT_OAUTH_SCOPE",
"oauth.microsoft.scope",
os.environ.get("MICROSOFT_OAUTH_SCOPE", "openid email profile"),
)
OAUTH_CLIENT_ID = PersistentConfig(
"OAUTH_CLIENT_ID",
"oauth.oidc.client_id",
os.environ.get("OAUTH_CLIENT_ID", ""),
)
OAUTH_CLIENT_SECRET = PersistentConfig(
"OAUTH_CLIENT_SECRET",
"oauth.oidc.client_secret",
os.environ.get("OAUTH_CLIENT_SECRET", ""),
)
OPENID_PROVIDER_URL = PersistentConfig(
"OPENID_PROVIDER_URL",
"oauth.oidc.provider_url",
os.environ.get("OPENID_PROVIDER_URL", ""),
)
OAUTH_SCOPES = PersistentConfig(
"OAUTH_SCOPES",
"oauth.oidc.scopes",
os.environ.get("OAUTH_SCOPES", "openid email profile"),
)
OAUTH_PROVIDER_NAME = PersistentConfig(
"OAUTH_PROVIDER_NAME",
"oauth.oidc.provider_name",
os.environ.get("OAUTH_PROVIDER_NAME", "SSO"),
)
def load_oauth_providers():
OAUTH_PROVIDERS.clear()
if GOOGLE_CLIENT_ID.value and GOOGLE_CLIENT_SECRET.value:
OAUTH_PROVIDERS["google"] = { OAUTH_PROVIDERS["google"] = {
"client_id": os.environ.get("GOOGLE_CLIENT_ID"), "client_id": GOOGLE_CLIENT_ID.value,
"client_secret": os.environ.get("GOOGLE_CLIENT_SECRET"), "client_secret": GOOGLE_CLIENT_SECRET.value,
"server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration", "server_metadata_url": "https://accounts.google.com/.well-known/openid-configuration",
"scope": os.environ.get("GOOGLE_OAUTH_SCOPE", "openid email profile"), "scope": GOOGLE_OAUTH_SCOPE.value,
} }
if ( if (
os.environ.get("MICROSOFT_CLIENT_ID") MICROSOFT_CLIENT_ID.value
and os.environ.get("MICROSOFT_CLIENT_SECRET") and MICROSOFT_CLIENT_SECRET.value
and os.environ.get("MICROSOFT_CLIENT_TENANT_ID") and MICROSOFT_CLIENT_TENANT_ID.value
): ):
OAUTH_PROVIDERS["microsoft"] = { OAUTH_PROVIDERS["microsoft"] = {
"client_id": os.environ.get("MICROSOFT_CLIENT_ID"), "client_id": MICROSOFT_CLIENT_ID.value,
"client_secret": os.environ.get("MICROSOFT_CLIENT_SECRET"), "client_secret": MICROSOFT_CLIENT_SECRET.value,
"server_metadata_url": f"https://login.microsoftonline.com/{os.environ.get('MICROSOFT_CLIENT_TENANT_ID')}/v2.0/.well-known/openid-configuration", "server_metadata_url": f"https://login.microsoftonline.com/{MICROSOFT_CLIENT_TENANT_ID.value}/v2.0/.well-known/openid-configuration",
"scope": os.environ.get("MICROSOFT_OAUTH_SCOPE", "openid email profile"), "scope": MICROSOFT_OAUTH_SCOPE.value,
} }
if ( if (
os.environ.get("OAUTH_CLIENT_ID") OAUTH_CLIENT_ID.value
and os.environ.get("OAUTH_CLIENT_SECRET") and OAUTH_CLIENT_SECRET.value
and os.environ.get("OPENID_PROVIDER_URL") and OPENID_PROVIDER_URL.value
): ):
OAUTH_PROVIDERS["oidc"] = { OAUTH_PROVIDERS["oidc"] = {
"client_id": os.environ.get("OAUTH_CLIENT_ID"), "client_id": OAUTH_CLIENT_ID.value,
"client_secret": os.environ.get("OAUTH_CLIENT_SECRET"), "client_secret": OAUTH_CLIENT_SECRET.value,
"server_metadata_url": os.environ.get("OPENID_PROVIDER_URL"), "server_metadata_url": OPENID_PROVIDER_URL.value,
"scope": os.environ.get("OAUTH_SCOPES", "openid email profile"), "scope": OAUTH_SCOPES.value,
"name": os.environ.get("OAUTH_PROVIDER_NAME", "SSO"), "name": OAUTH_PROVIDER_NAME.value,
} }
load_oauth_providers()
#################################### ####################################
# Static DIR # Static DIR
#################################### ####################################