Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
chenpangpang
open-webui
Commits
06dbf597
"vscode:/vscode.git/clone" did not exist on "57243fd56537dc7215360ab5b6db882b2a7b7fe5"
Commit
06dbf597
authored
May 27, 2024
by
Jun Siang Cheah
Browse files
feat: make oauth config persist into config.json
parent
4a4e323a
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
113 additions
and
30 deletions
+113
-30
backend/config.py
backend/config.py
+113
-30
No files found.
backend/config.py
View file @
06dbf597
...
...
@@ -295,41 +295,124 @@ ENABLE_OAUTH_SIGNUP = PersistentConfig(
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
=
{}
if
os
.
environ
.
get
(
"GOOGLE_CLIENT_ID"
)
and
os
.
environ
.
get
(
"GOOGLE_CLIENT_SECRET"
):
OAUTH_PROVIDERS
[
"google"
]
=
{
"client_id"
:
os
.
environ
.
get
(
"GOOGLE_CLIENT_ID"
),
"client_secret"
:
os
.
environ
.
get
(
"GOOGLE_CLIENT_SECRET"
),
"server_metadata_url"
:
"https://accounts.google.com/.well-known/openid-configuration"
,
"scope"
:
os
.
environ
.
get
(
"GOOGLE_OAUTH_SCOPE"
,
"openid email profile"
),
}
GOOGLE_CLIENT_ID
=
PersistentConfig
(
"GOOGLE_CLIENT_ID"
,
"oauth.google.client_id"
,
os
.
environ
.
get
(
"GOOGLE_CLIENT_ID"
,
""
),
)
if
(
os
.
environ
.
get
(
"MICROSOFT_CLIENT_ID"
)
and
os
.
environ
.
get
(
"MICROSOFT_CLIENT_SECRET"
)
and
os
.
environ
.
get
(
"MICROSOFT_CLIENT_TENANT_ID"
)
):
OAUTH_PROVIDERS
[
"microsoft"
]
=
{
"client_id"
:
os
.
environ
.
get
(
"MICROSOFT_CLIENT_ID"
),
"client_secret"
:
os
.
environ
.
get
(
"MICROSOFT_CLIENT_SECRET"
),
"server_metadata_url"
:
f
"https://login.microsoftonline.com/
{
os
.
environ
.
get
(
'MICROSOFT_CLIENT_TENANT_ID'
)
}
/v2.0/.well-known/openid-configuration"
,
"scope"
:
os
.
environ
.
get
(
"MICROSOFT_OAUTH_SCOPE"
,
"openid email profile"
),
}
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"
]
=
{
"client_id"
:
GOOGLE_CLIENT_ID
.
value
,
"client_secret"
:
GOOGLE_CLIENT_SECRET
.
value
,
"server_metadata_url"
:
"https://accounts.google.com/.well-known/openid-configuration"
,
"scope"
:
GOOGLE_OAUTH_SCOPE
.
value
,
}
if
(
MICROSOFT_CLIENT_ID
.
value
and
MICROSOFT_CLIENT_SECRET
.
value
and
MICROSOFT_CLIENT_TENANT_ID
.
value
):
OAUTH_PROVIDERS
[
"microsoft"
]
=
{
"client_id"
:
MICROSOFT_CLIENT_ID
.
value
,
"client_secret"
:
MICROSOFT_CLIENT_SECRET
.
value
,
"server_metadata_url"
:
f
"https://login.microsoftonline.com/
{
MICROSOFT_CLIENT_TENANT_ID
.
value
}
/v2.0/.well-known/openid-configuration"
,
"scope"
:
MICROSOFT_OAUTH_SCOPE
.
value
,
}
if
(
OAUTH_CLIENT_ID
.
value
and
OAUTH_CLIENT_SECRET
.
value
and
OPENID_PROVIDER_URL
.
value
):
OAUTH_PROVIDERS
[
"oidc"
]
=
{
"client_id"
:
OAUTH_CLIENT_ID
.
value
,
"client_secret"
:
OAUTH_CLIENT_SECRET
.
value
,
"server_metadata_url"
:
OPENID_PROVIDER_URL
.
value
,
"scope"
:
OAUTH_SCOPES
.
value
,
"name"
:
OAUTH_PROVIDER_NAME
.
value
,
}
if
(
os
.
environ
.
get
(
"OAUTH_CLIENT_ID"
)
and
os
.
environ
.
get
(
"OAUTH_CLIENT_SECRET"
)
and
os
.
environ
.
get
(
"OPENID_PROVIDER_URL"
)
):
OAUTH_PROVIDERS
[
"oidc"
]
=
{
"client_id"
:
os
.
environ
.
get
(
"OAUTH_CLIENT_ID"
),
"client_secret"
:
os
.
environ
.
get
(
"OAUTH_CLIENT_SECRET"
),
"server_metadata_url"
:
os
.
environ
.
get
(
"OPENID_PROVIDER_URL"
),
"scope"
:
os
.
environ
.
get
(
"OAUTH_SCOPES"
,
"openid email profile"
),
"name"
:
os
.
environ
.
get
(
"OAUTH_PROVIDER_NAME"
,
"SSO"
),
}
load_oauth_providers
()
####################################
# Static DIR
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment