def signout_cas(self): client = CASClient(version='2', renew=False, extra_login_params=False, server_url=CONF.lfid_url, service_url=CONF.lfid_return_url) url = client.get_logout_url(CONF.ui_url) self.redirect(url)
def signout_cas(self): client = CASClient(version='2', renew=False, extra_login_params=False, server_url=CONF.lfid_url, service_url='http://{0}/{1}'.format( self.request.host, CONF.lfid_return_url)) self.clear_cookie('ticket') self.clear_cookie('signin_type') url = client.get_logout_url('http://{0}'.format(self.request.host)) self.redirect(url)
def logout(request): """ Logs the user out of their Uniauth account, and redirects to the next page, defaulting to the URL specified by the UNIAUTH_LOGOUT_REDIRECT_URL setting. If no redirect page is set (URL parameter not given and UNIAUTH_LOGOUT_REDIRECT_URL is None), renders the logout template. Also logs the user out of CAS if they logged in via CAS, and the UNIAUTH_LOGOUT_CAS_COMPLETELY setting is true. """ next_page = request.GET.get('next') auth_method = request.session.get('auth-method') if not next_page and get_setting('UNIAUTH_LOGOUT_REDIRECT_URL'): next_page = get_redirect_url( request, get_setting('UNIAUTH_LOGOUT_REDIRECT_URL')) # Formally log out user auth_logout(request) # Determine whether the user logged in through an institution's CAS institution = None if auth_method and auth_method.startswith("cas-"): try: institution = Institution.objects.get(slug=auth_method[4:]) except Institution.DoesNotExist: pass # If we need to logout an institution's CAS, # redirect to that CAS server's logout URL if institution and get_setting('UNIAUTH_LOGOUT_CAS_COMPLETELY'): redirect_url = urlunparse( (get_protocol(request), request.get_host(), next_page or reverse('uniauth:logout'), '', '', '')) client = CASClient(version=2, service_url=get_service_url(request), server_url=institution.cas_server_url) return HttpResponseRedirect(client.get_logout_url(redirect_url)) # If next page is set, proceed to it elif next_page: return HttpResponseRedirect(next_page) # Otherwise, render the logout view else: return render(request, 'uniauth/logout.html')