Skip to content

Commit 4703b1d

Browse files
committed
feat(sync): update oidc client generation urls to better auth standard
1 parent dcb7615 commit 4703b1d

File tree

3 files changed

+35
-35
lines changed

3 files changed

+35
-35
lines changed

__meta/synchronizer/synchronizer/services/keycloak_synchronizer.py

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -12,10 +12,8 @@
1212
from synchronizer.utils import (
1313
ENVS,
1414
ENVS_LITERAL,
15-
get_dev_server_url,
16-
get_local_server_url,
17-
get_prod_server_url,
18-
get_staging_server_url,
15+
get_frontend_url,
16+
get_server_url,
1917
)
2018

2119
from .abstract_synchronizer import AbstractSynchronizer
@@ -129,36 +127,16 @@ def create_client(
129127
self, client_id: str, website_slug: str, env: ENVS_LITERAL
130128
) -> None:
131129
# Generate the URIs for the client
132-
root_url = None
133-
match env:
134-
case "dev":
135-
root_url = f"https://{website_slug}.slabs-dev.org"
136-
server_url = get_dev_server_url(website_slug)
137-
case "staging":
138-
root_url = f"https://{website_slug}.slabs-staging.org"
139-
server_url = get_staging_server_url(website_slug)
140-
case "prod":
141-
root_url = f"https://{website_slug}.scottylabs.org"
142-
server_url = get_prod_server_url(website_slug)
143-
144-
if env == "local":
145-
redirect_uris = [f"{get_local_server_url()}/auth/callback"]
146-
post_logout_redirect_uris = "http://localhost:3000/*"
147-
else:
148-
redirect_uris = [f"{server_url}/auth/callback"]
149-
# Permit any post-logout redirect URI with the same origin
150-
post_logout_redirect_uris = "/*"
130+
root_url = get_frontend_url(website_slug, env)
131+
server_url = get_server_url(website_slug, env)
132+
redirect_uris = [f"{server_url}/api/auth/oauth2/callback/keycloak"]
151133

152134
# Create the client
153135
self.keycloak_admin.create_client(
154136
payload={
155137
"clientId": client_id,
156138
"rootUrl": root_url,
157139
"redirectUris": redirect_uris,
158-
# https://github.com/keycloak/keycloak/discussions/19087#discussioncomment-5338785
159-
"attributes": {
160-
"post.logout.redirect.uris": post_logout_redirect_uris,
161-
},
162140
"serviceAccountsEnabled": True,
163141
"frontchannelLogout": True,
164142
"protocolMappers": [
Lines changed: 2 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,13 @@
11
from .env_urls import (
22
ENVS,
33
ENVS_LITERAL,
4-
get_dev_server_url,
5-
get_local_server_url,
6-
get_prod_server_url,
4+
get_frontend_url,
75
get_server_url,
8-
get_staging_server_url,
96
)
107

118
__all__ = [
129
"ENVS",
1310
"ENVS_LITERAL",
14-
"get_dev_server_url",
15-
"get_local_server_url",
16-
"get_prod_server_url",
11+
"get_frontend_url",
1712
"get_server_url",
18-
"get_staging_server_url",
1913
]

__meta/synchronizer/synchronizer/utils/env_urls.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,31 @@ def get_staging_server_url(website_slug: str) -> str:
3131

3232
def get_prod_server_url(website_slug: str) -> str:
3333
return f"https://api.{website_slug}.scottylabs.org"
34+
35+
36+
def get_frontend_url(website_slug: str, env: ENVS_LITERAL) -> str:
37+
match env:
38+
case "local":
39+
return get_local_frontend_url()
40+
case "dev":
41+
return get_dev_frontend_url(website_slug)
42+
case "staging":
43+
return get_staging_frontend_url(website_slug)
44+
case "prod":
45+
return get_prod_frontend_url(website_slug)
46+
47+
48+
def get_local_frontend_url() -> str:
49+
return "http://localhost:3000"
50+
51+
52+
def get_dev_frontend_url(website_slug: str) -> str:
53+
return f"https://{website_slug}.slabs-dev.org"
54+
55+
56+
def get_staging_frontend_url(website_slug: str) -> str:
57+
return f"https://{website_slug}.slabs-staging.org"
58+
59+
60+
def get_prod_frontend_url(website_slug: str) -> str:
61+
return f"https://{website_slug}.scottylabs.org"

0 commit comments

Comments
 (0)