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
|
import uuid
|
||||||
from datetime import timedelta
|
from datetime import timedelta
|
||||||
from smtplib import SMTPRecipientsRefused
|
from smtplib import SMTPRecipientsRefused
|
||||||
|
from urllib.parse import parse_qs, urlencode, urlparse, urlunparse
|
||||||
|
|
||||||
from custommail.shortcuts import send_custom_mail
|
from custommail.shortcuts import send_custom_mail
|
||||||
from django.contrib import messages
|
from django.contrib import messages
|
||||||
|
@ -98,6 +99,30 @@ class LoginExtView(DjangoLoginView):
|
||||||
return super().form_invalid(form)
|
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
|
@login_required
|
||||||
def logout(request, next_page=None):
|
def logout(request, next_page=None):
|
||||||
if next_page is None:
|
if next_page is None:
|
||||||
|
@ -107,7 +132,7 @@ def logout(request, next_page=None):
|
||||||
|
|
||||||
if profile and profile.login_clipper:
|
if profile and profile.login_clipper:
|
||||||
msg = _("Déconnexion de GestioCOF et CAS réussie. À bientôt {}.")
|
msg = _("Déconnexion de GestioCOF et CAS réussie. À bientôt {}.")
|
||||||
logout_view = CasLogoutView.as_view()
|
logout_view = CustomCasLogoutView.as_view()
|
||||||
else:
|
else:
|
||||||
msg = _("Déconnexion de GestioCOF réussie. À bientôt {}.")
|
msg = _("Déconnexion de GestioCOF réussie. À bientôt {}.")
|
||||||
logout_view = DjangoLogoutView.as_view(
|
logout_view = DjangoLogoutView.as_view(
|
||||||
|
|
Loading…
Reference in a new issue