forked from DGNum/gestioCOF
Patch CAS redirect parameter in logout view
This commit is contained in:
parent
14164ec4a5
commit
ac4d5cf7d5
1 changed files with 26 additions and 1 deletions
|
@ -2,6 +2,7 @@ import csv
|
|||
import uuid
|
||||
from datetime import timedelta
|
||||
from smtplib import SMTPRecipientsRefused
|
||||
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||
|
||||
from custommail.shortcuts import send_custom_mail
|
||||
from django.contrib import messages
|
||||
|
@ -98,6 +99,30 @@ class LoginExtView(DjangoLoginView):
|
|||
return super().form_invalid(form)
|
||||
|
||||
|
||||
class CustomCasLogoutView(CasLogoutView):
|
||||
"""
|
||||
Actuellement, le CAS de l'ENS est pété et n'a pas le bon paramètre GET
|
||||
pour rediriger après déconnexion. On change la redirection à la main
|
||||
dans la vue de logout.
|
||||
"""
|
||||
|
||||
def get(self, request):
|
||||
# CasLogoutView.get() retourne un HttpResponseRedirect
|
||||
response = super().get(request)
|
||||
parse_result = urlparse(response.url)
|
||||
qd = parse_qs(parse_result.query)
|
||||
|
||||
if "url" in qd.keys():
|
||||
# je ne vois pas bien pourquoi il faut un 2e "pop"...
|
||||
qd["service"] = qd.pop("url").pop()
|
||||
|
||||
# La méthode _replace est documentée !
|
||||
new_url = parse_result._replace(query=urlencode(qd))
|
||||
print(qd)
|
||||
print(urlunparse(new_url))
|
||||
return redirect(urlunparse(new_url))
|
||||
|
||||
|
||||
@login_required
|
||||
def logout(request, next_page=None):
|
||||
if next_page is None:
|
||||
|
@ -107,7 +132,7 @@ def logout(request, next_page=None):
|
|||
|
||||
if profile and profile.login_clipper:
|
||||
msg = _("Déconnexion de GestioCOF et CAS réussie. À bientôt {}.")
|
||||
logout_view = CasLogoutView.as_view()
|
||||
logout_view = CustomCasLogoutView.as_view()
|
||||
else:
|
||||
msg = _("Déconnexion de GestioCOF réussie. À bientôt {}.")
|
||||
logout_view = DjangoLogoutView.as_view(
|
||||
|
|
Loading…
Reference in a new issue