1
0
mirror of https://github.com/netbox-community/netbox.git synced 2024-05-10 07:54:54 +00:00

#9962 add next param to sso url

This commit is contained in:
Arthur
2022-08-26 12:55:35 -07:00
parent 88d2fca2c6
commit 2a7bad326d

View File

@ -39,12 +39,12 @@ 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): def gen_auth_data(self, name, url, params):
display_name, icon_name = get_auth_backend_display(name) display_name, icon_name = get_auth_backend_display(name)
return { return {
'display_name': display_name, 'display_name': display_name,
'icon_name': icon_name, 'icon_name': icon_name,
'url': url, 'url': f'{url}?{urlencode(params)}',
} }
def get(self, request): def get(self, request):
@ -58,15 +58,18 @@ class LoginView(View):
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 = {}
next = request.GET.get('next')
if 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:
params = {'idp': idp} params['idp'] = idp
idp_url = f'{url}?{urlencode(params)}' data = self.gen_auth_data(name, url, params)
data = self.gen_auth_data(name, idp_url)
data['display_name'] = f'{data["display_name"]} ({idp})' data['display_name'] = f'{data["display_name"]} ({idp})'
auth_backends.append(data) auth_backends.append(data)
else: else:
auth_backends.append(self.gen_auth_data(name, url)) auth_backends.append(self.gen_auth_data(name, url, params))
return render(request, self.template_name, { return render(request, self.template_name, {
'form': form, 'form': form,