mirror of
https://github.com/netbox-community/netbox.git
synced 2024-05-10 07:54:54 +00:00
Fixes #10337: Display SSO links when local authentication fails
This commit is contained in:
@ -23,6 +23,7 @@
|
|||||||
* [#10305](https://github.com/netbox-community/netbox/issues/10305) - Fix Virtual Chassis master field cannot be null according to the API
|
* [#10305](https://github.com/netbox-community/netbox/issues/10305) - Fix Virtual Chassis master field cannot be null according to the API
|
||||||
* [#10307](https://github.com/netbox-community/netbox/issues/10307) - Correct value for "Passive 48V (4-pair)" PoE type selection
|
* [#10307](https://github.com/netbox-community/netbox/issues/10307) - Correct value for "Passive 48V (4-pair)" PoE type selection
|
||||||
* [#10333](https://github.com/netbox-community/netbox/issues/10333) - Show available values for `ui_visibility` field of CustomField for CSV import
|
* [#10333](https://github.com/netbox-community/netbox/issues/10333) - Show available values for `ui_visibility` field of CustomField for CSV import
|
||||||
|
* [#10337](https://github.com/netbox-community/netbox/issues/10337) - Display SSO links when local authentication fails
|
||||||
* [#10362](https://github.com/netbox-community/netbox/issues/10362) - Correct display of custom fields when editing an L2VPN termination
|
* [#10362](https://github.com/netbox-community/netbox/issues/10362) - Correct display of custom fields when editing an L2VPN termination
|
||||||
|
|
||||||
---
|
---
|
||||||
|
@ -13,6 +13,16 @@
|
|||||||
</div>
|
</div>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
|
{# Login form errors #}
|
||||||
|
{% if form.non_field_errors %}
|
||||||
|
<div class="alert alert-danger" role="alert">
|
||||||
|
<h4 class="alert-heading">Errors</h4>
|
||||||
|
<p>
|
||||||
|
{{ form.non_field_errors }}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
{% endif %}
|
||||||
|
|
||||||
{# Login form #}
|
{# Login form #}
|
||||||
<div class="form-login">
|
<div class="form-login">
|
||||||
<form action="{% url 'login' %}" method="post">
|
<form action="{% url 'login' %}" method="post">
|
||||||
@ -48,16 +58,6 @@
|
|||||||
</h5>
|
</h5>
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{# Login form errors #}
|
|
||||||
{% if form.non_field_errors %}
|
|
||||||
<div class="alert alert-danger" role="alert">
|
|
||||||
<h4 class="alert-heading">Errors</h4>
|
|
||||||
<p>
|
|
||||||
{{ form.non_field_errors }}
|
|
||||||
</p>
|
|
||||||
</div>
|
|
||||||
{% endif %}
|
|
||||||
</main>
|
</main>
|
||||||
|
|
||||||
{# Page footer #}
|
{# Page footer #}
|
||||||
|
@ -47,20 +47,14 @@ class LoginView(View):
|
|||||||
'url': f'{url}?{urlencode(params)}',
|
'url': f'{url}?{urlencode(params)}',
|
||||||
}
|
}
|
||||||
|
|
||||||
def get(self, request):
|
def get_auth_backends(self, request):
|
||||||
form = LoginForm(request)
|
|
||||||
|
|
||||||
if request.user.is_authenticated:
|
|
||||||
logger = logging.getLogger('netbox.auth.login')
|
|
||||||
return self.redirect_to_next(request, logger)
|
|
||||||
|
|
||||||
auth_backends = []
|
auth_backends = []
|
||||||
saml_idps = get_saml_idps()
|
saml_idps = get_saml_idps()
|
||||||
|
|
||||||
for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys():
|
for name in load_backends(settings.AUTHENTICATION_BACKENDS).keys():
|
||||||
url = reverse('social:begin', args=[name, ])
|
url = reverse('social:begin', args=[name])
|
||||||
params = {}
|
params = {}
|
||||||
next = request.GET.get('next')
|
if next := request.GET.get('next'):
|
||||||
if next:
|
|
||||||
params['next'] = next
|
params['next'] = next
|
||||||
if name.lower() == 'saml' and saml_idps:
|
if name.lower() == 'saml' and saml_idps:
|
||||||
for idp in saml_idps:
|
for idp in saml_idps:
|
||||||
@ -71,9 +65,18 @@ class LoginView(View):
|
|||||||
else:
|
else:
|
||||||
auth_backends.append(self.gen_auth_data(name, url, params))
|
auth_backends.append(self.gen_auth_data(name, url, params))
|
||||||
|
|
||||||
|
return auth_backends
|
||||||
|
|
||||||
|
def get(self, request):
|
||||||
|
form = LoginForm(request)
|
||||||
|
|
||||||
|
if request.user.is_authenticated:
|
||||||
|
logger = logging.getLogger('netbox.auth.login')
|
||||||
|
return self.redirect_to_next(request, logger)
|
||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'form': form,
|
'form': form,
|
||||||
'auth_backends': auth_backends,
|
'auth_backends': self.get_auth_backends(request),
|
||||||
})
|
})
|
||||||
|
|
||||||
def post(self, request):
|
def post(self, request):
|
||||||
@ -107,7 +110,7 @@ class LoginView(View):
|
|||||||
|
|
||||||
return render(request, self.template_name, {
|
return render(request, self.template_name, {
|
||||||
'form': form,
|
'form': form,
|
||||||
'auth_backends': load_backends(settings.AUTHENTICATION_BACKENDS),
|
'auth_backends': self.get_auth_backends(request),
|
||||||
})
|
})
|
||||||
|
|
||||||
def redirect_to_next(self, request, logger):
|
def redirect_to_next(self, request, logger):
|
||||||
|
Reference in New Issue
Block a user