From 3e9d489c85a6ad0b788af6265c4669c9c4e0035f Mon Sep 17 00:00:00 2001 From: mwallschlaeger Date: Thu, 18 Apr 2024 08:40:53 +0200 Subject: [PATCH 1/3] [Fixes #12167] providing multiple openid_connect django.allauth socialproviders fails when loading login page --- geonode/people/adapters.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/geonode/people/adapters.py b/geonode/people/adapters.py index 279037aee8e..60d17df5830 100644 --- a/geonode/people/adapters.py +++ b/geonode/people/adapters.py @@ -267,7 +267,12 @@ def get_provider(self, request=None, provider=None): provider = provider or self.provider_id provider_class = registry.get_class(provider) if provider_class is None or provider_class.uses_apps: - app = self.get_app(request, provider=provider) + # check if first app provider contains client_id, mutiple apps in a single provider + # get seperated into multiple providers, an this function gets called multiple times + # https://github.com/pennersr/django-allauth/blob/main/docs/socialaccount/providers/openid_connect.rst + if not self.list_apps(request)[0].client_id: + raise (ImproperlyConfigured(f"Missing client_id parameter in provider: {provider} configuration")) + app = self.get_app(request, provider=provider, client_id=self.list_apps(request)[0].client_id) if not provider_class: # In this case, the `provider` argument passed was a # `provider_id`. From 57fa1d8d18563e0609fae8f6b92398ab4aaaae7e Mon Sep 17 00:00:00 2001 From: mwallschlaeger Date: Tue, 23 Apr 2024 14:18:41 +0200 Subject: [PATCH 2/3] [Fixes #12167] providing multiple openid_connect django.allauth socialproviders fails when loading login page --- geonode/people/adapters.py | 7 +------ .../templates/socialaccount/snippets/provider_list.html | 4 ++-- .../socialaccount/snippets/remaining_providers_list.html | 4 ++-- 3 files changed, 5 insertions(+), 10 deletions(-) diff --git a/geonode/people/adapters.py b/geonode/people/adapters.py index 60d17df5830..279037aee8e 100644 --- a/geonode/people/adapters.py +++ b/geonode/people/adapters.py @@ -267,12 +267,7 @@ def get_provider(self, request=None, provider=None): provider = provider or self.provider_id provider_class = registry.get_class(provider) if provider_class is None or provider_class.uses_apps: - # check if first app provider contains client_id, mutiple apps in a single provider - # get seperated into multiple providers, an this function gets called multiple times - # https://github.com/pennersr/django-allauth/blob/main/docs/socialaccount/providers/openid_connect.rst - if not self.list_apps(request)[0].client_id: - raise (ImproperlyConfigured(f"Missing client_id parameter in provider: {provider} configuration")) - app = self.get_app(request, provider=provider, client_id=self.list_apps(request)[0].client_id) + app = self.get_app(request, provider=provider) if not provider_class: # In this case, the `provider` argument passed was a # `provider_id`. diff --git a/geonode/templates/socialaccount/snippets/provider_list.html b/geonode/templates/socialaccount/snippets/provider_list.html index 89df15609fc..a540e77b4c8 100644 --- a/geonode/templates/socialaccount/snippets/provider_list.html +++ b/geonode/templates/socialaccount/snippets/provider_list.html @@ -7,13 +7,13 @@ {% for provider in socialaccount_providers %} {% if provider.id == "openid" %} {% for brand in provider.get_brands %} - + {{brand.name}} {% endfor %} {% endif %}
- + {% if process == "login" %} {% trans "Sign in with" %} diff --git a/geonode/templates/socialaccount/snippets/remaining_providers_list.html b/geonode/templates/socialaccount/snippets/remaining_providers_list.html index c6e355ba139..5b35ca373be 100644 --- a/geonode/templates/socialaccount/snippets/remaining_providers_list.html +++ b/geonode/templates/socialaccount/snippets/remaining_providers_list.html @@ -7,13 +7,13 @@ {% for provider in other_providers %} {% if provider.id == "openid" %} {% for brand in provider.get_brands %} - + {{brand.name}} {% endfor %} {% endif %}
- + {% if process == "login" %} {% trans "Sign in with" %} From e4c6364c6aa1d33e3a78fab81e43096dc31f0629 Mon Sep 17 00:00:00 2001 From: mwallschlaeger Date: Wed, 24 Apr 2024 10:33:42 +0200 Subject: [PATCH 3/3] [Fixes #12167] providing multiple openid_connect django.allauth socialproviders fails when loading login page --- geonode/people/templatetags/socialaccount_extra.py | 6 +++--- geonode/templates/socialaccount/snippets/provider_list.html | 2 +- .../socialaccount/snippets/remaining_providers_list.html | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/geonode/people/templatetags/socialaccount_extra.py b/geonode/people/templatetags/socialaccount_extra.py index 42c8e99981b..3daffb8fa4d 100644 --- a/geonode/people/templatetags/socialaccount_extra.py +++ b/geonode/people/templatetags/socialaccount_extra.py @@ -15,10 +15,10 @@ def get_user_social_providers(user): @register.simple_tag def get_other_social_providers(user): user_providers = get_user_social_providers(user) - user_provider_names = [p.name.lower() for p in user_providers] + user_provider_names = [p.id.lower() for p in user_providers] other_providers = [] - for provider in providers.registry.get_list(): - if provider.name.lower() not in user_provider_names: + for provider in providers.registry.get_class_list(): + if provider.id.lower() not in user_provider_names: other_providers.append(provider) return other_providers diff --git a/geonode/templates/socialaccount/snippets/provider_list.html b/geonode/templates/socialaccount/snippets/provider_list.html index a540e77b4c8..1d3cf1d09fa 100644 --- a/geonode/templates/socialaccount/snippets/provider_list.html +++ b/geonode/templates/socialaccount/snippets/provider_list.html @@ -5,7 +5,7 @@ {% get_providers as socialaccount_providers %} {% for provider in socialaccount_providers %} - {% if provider.id == "openid" %} + {% if provider.id == "openid_connect" %} {% for brand in provider.get_brands %} {{brand.name}} diff --git a/geonode/templates/socialaccount/snippets/remaining_providers_list.html b/geonode/templates/socialaccount/snippets/remaining_providers_list.html index 5b35ca373be..88dedab56a5 100644 --- a/geonode/templates/socialaccount/snippets/remaining_providers_list.html +++ b/geonode/templates/socialaccount/snippets/remaining_providers_list.html @@ -5,7 +5,7 @@ {% get_other_social_providers user as other_providers %} {% for provider in other_providers %} - {% if provider.id == "openid" %} + {% if provider.id == "openid_connect" %} {% for brand in provider.get_brands %} {{brand.name}}