mirror of
https://github.com/netbox-community/netbox.git
synced 2025-08-23 16:06:43 -06:00
#10135 refactor / cleanup
This commit is contained in:
parent
63c1b7380b
commit
7fdef17957
@ -41,20 +41,11 @@
|
|||||||
|
|
||||||
{% if auth_backends %}
|
{% if auth_backends %}
|
||||||
<h6 class="mt-4 mb-3">Or use a single sign-on (SSO) provider:</h6>
|
<h6 class="mt-4 mb-3">Or use a single sign-on (SSO) provider:</h6>
|
||||||
{% for name, backend in auth_backends.items %}
|
{% for backend in auth_backends %}
|
||||||
{% if name == 'saml' and backend.saml_idps %}
|
<h5>
|
||||||
{% for idp in backend.saml_idps %}
|
{% if backend.icon_name %}<i class="mdi mdi-{{ backend.icon_name }}"></i>{% endif %}
|
||||||
<h5>
|
<a href="{{ backend.url }}" class="my-2">{{ backend.display_name }}</a>
|
||||||
{% if backend.icon_name %}<i class="mdi mdi-{{ backend.icon_name }}"></i>{% endif %}
|
</h5>
|
||||||
<a href="{% url 'social:begin' backend=name %}?idp={{idp}}" class="my-2">{{ backend.display_name }} ({{idp}})</a>
|
|
||||||
</h5>
|
|
||||||
{% endfor %}
|
|
||||||
{% else %}
|
|
||||||
<h5>
|
|
||||||
{% if backend.icon_name %}<i class="mdi mdi-{{ backend.icon_name }}"></i>{% endif %}
|
|
||||||
<a href="{% url 'social:begin' backend=name %}" class="my-2">{{ backend.display_name }}</a>
|
|
||||||
</h5>
|
|
||||||
{% endif %}
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
@ -10,7 +10,7 @@ from django.http import HttpResponseRedirect
|
|||||||
from django.shortcuts import get_object_or_404, redirect, render
|
from django.shortcuts import get_object_or_404, redirect, render
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils.decorators import method_decorator
|
from django.utils.decorators import method_decorator
|
||||||
from django.utils.http import url_has_allowed_host_and_scheme
|
from django.utils.http import url_has_allowed_host_and_scheme, urlencode
|
||||||
from django.views.decorators.debug import sensitive_post_parameters
|
from django.views.decorators.debug import sensitive_post_parameters
|
||||||
from django.views.generic import View
|
from django.views.generic import View
|
||||||
from social_core.backends.utils import load_backends
|
from social_core.backends.utils import load_backends
|
||||||
@ -39,6 +39,14 @@ class LoginView(View):
|
|||||||
def dispatch(self, *args, **kwargs):
|
def dispatch(self, *args, **kwargs):
|
||||||
return super().dispatch(*args, **kwargs)
|
return super().dispatch(*args, **kwargs)
|
||||||
|
|
||||||
|
def gen_auth_data(self, name, url):
|
||||||
|
display_name, icon_name = get_auth_backend_display(name)
|
||||||
|
return {
|
||||||
|
'display_name': display_name,
|
||||||
|
'icon_name': icon_name,
|
||||||
|
'url': url,
|
||||||
|
}
|
||||||
|
|
||||||
def get(self, request):
|
def get(self, request):
|
||||||
form = LoginForm(request)
|
form = LoginForm(request)
|
||||||
|
|
||||||
@ -46,18 +54,19 @@ class LoginView(View):
|
|||||||
logger = logging.getLogger('netbox.auth.login')
|
logger = logging.getLogger('netbox.auth.login')
|
||||||
return self.redirect_to_next(request, logger)
|
return self.redirect_to_next(request, logger)
|
||||||
|
|
||||||
auth_backends = {}
|
auth_backends = []
|
||||||
|
saml_idps = get_saml_idps()
|
||||||
for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys():
|
for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys():
|
||||||
display_name, icon_name = get_auth_backend_display(name)
|
url = reverse('social:begin', args=[name, ])
|
||||||
data = {
|
if name.lower() == 'saml' and saml_idps:
|
||||||
'display_name': display_name,
|
for idp in saml_idps:
|
||||||
'icon_name': icon_name,
|
params = {'idp': idp}
|
||||||
}
|
idp_url = f'{url}?{urlencode(params)}'
|
||||||
|
data = self.gen_auth_data(name, idp_url)
|
||||||
if name == 'saml':
|
data['display_name'] = f'{data["display_name"]} ({idp})'
|
||||||
data['saml_idps'] = get_saml_idps()
|
auth_backends.append(data)
|
||||||
|
else:
|
||||||
auth_backends[name] = data
|
auth_backends.append(self.gen_auth_data(name, url))
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'form': form,
|
'form': form,
|
||||||
|
Loading…
Reference in New Issue
Block a user