refactor(keycloak): set API endpoint while getting list of oauth providers

urljoin() just adds the base URL to the relative path, here our base URL has an extra route in the path which isn't added in.

Signed-off-by: Akhil Narang <me@akhilnarang.dev>
This commit is contained in:
Akhil Narang 2024-09-19 13:42:11 +05:30
parent 42b01570ae
commit 71b869a975
No known key found for this signature in database
GPG key ID: 9DCC61E211BF645F
2 changed files with 6 additions and 4 deletions

View file

@ -88,8 +88,6 @@ class SocialLoginKey(Document):
frappe.throw(
_("Please enter Client Secret before social login is enabled"), exc=ClientSecretNotSetError
)
if self.social_login_provider == "Keycloak":
self.api_endpoint = self.base_url + "/protocol/openid-connect/userinfo"
def set_icon(self):
icon_map = {
@ -219,10 +217,9 @@ class SocialLoginKey(Document):
providers["Keycloak"] = {
"provider_name": "Keycloak",
"enable_social_login": 1,
"base_url": "realms/master",
"custom_base_url": 1,
"redirect_url": "/api/method/frappe.integrations.oauth2_logins.login_via_keycloak/keycloak",
"api_endpoint": "realms/masterl/protocol/openid-connect/userinfo",
"api_endpoint": "/protocol/openid-connect/userinfo",
"api_endpoint_args": None,
"authorize_url": "/protocol/openid-connect/auth",
"access_token_url": "/protocol/openid-connect/token",

View file

@ -28,6 +28,11 @@ def get_oauth2_providers() -> dict[str, dict]:
if provider.custom_base_url:
authorize_url = provider.base_url + provider.authorize_url
access_token_url = provider.base_url + provider.access_token_url
# Keycloak needs this, the base URL also has a route, that urljoin() ignores
if provider.name == "keycloak":
provider.api_endpoint = provider.base_url + provider.api_endpoint
out[provider.name] = {
"flow_params": {
"name": provider.name,