Bug #9195
Modify logout view to take in account redirections.
100%
Description
views.logout make a full logout with iframes and then a local logout.
It may be necessary to make logout by redirections before local logout.
Logout fragments are collected from plugins calling logout_list functions. Those currently return iframe html fragments. So they could also return a uri.
To dinstinguish them and keep compatibility, the patch propose to pass the uri in a dict.
Fichiers
Révisions associées
Historique
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier
0001-Allow-redirections-in-logout-from-plugins.patchsupprimé
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier 0001-Allow-redirections-in-logout-from-plugins.patch ajouté
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
I would like the local logout to happen before the last redirection, so this patch is not acceptable currently.
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier 0001-Handle-logout-by-redirection-from-plugins.patch ajouté
Local logout is now done before handling redirections.
The session dict is saved only when it's modified (https://docs.djangoproject.com/fr/1.9/topics/http/sessions/). That is not the case when I pop a value of a list recorded in the session. One solution is to use SESSION_SAVE_EVERY_REQUEST / request.session.modified. I prefered to pop the list from the dict, pop a value from it and record the list updated in the session.
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier
0001-Allow-redirections-in-logout-from-plugins.patchsupprimé
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier 0001-Handle-logout-by-redirection-from-plugins.patch ajouté
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier
0001-Handle-logout-by-redirection-from-plugins.patchsupprimé
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
C'est là qu'un test autour du logout aurait-été bien... Est-ce que tu ne pourrais pas modifier un peu moins la structure de contrôle ? La fonction est déjà complexe, et le changement ne la simplifiant pas j'aurai préféré que le changement soit moins intrusif.
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier 0001-Handle-logout-by-redirection-from-plugins.patch 0001-Handle-logout-by-redirection-from-plugins.patch ajouté
Patch revised to set the info message and do the set cookie only at the local logout.
Mis à jour par Mikaël Ates il y a plus de 8 ans
- Fichier
0001-Handle-logout-by-redirection-from-plugins.patchsupprimé
Mis à jour par Mikaël Ates il y a plus de 8 ans
La structure de contrôle sort de la fonction si l'utilisateur n'est pas loggué localement. Or la vue gère désormais les logouts par redirections après le logout local, ce qui m'a conduit à revoir la structure de contrôle. Si tu vois quelque chose de plus léger, dis moi.
Mis à jour par Benjamin Dauvergne il y a plus de 8 ans
- Assigné à changé de Benjamin Dauvergne à Mikaël Ates
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
Avec le code actuel le next_url
d'origine est perdu quand targets n'est pas vide, j'ajouterai le patch suivant;
diff --git a/src/authentic2/views.py b/src/authentic2/views.py index ed348a2..13699bc 100644 --- a/src/authentic2/views.py +++ b/src/authentic2/views.py @@ -469,7 +469,7 @@ def logout(request, next_url=None, default_next_url='auth_homepage', local_logout_done = True # Put redirection targets in session (after logout) if targets: - request.session['logout_redirections'] = targets + request.session['logout_redirections'] = [next_url] + targets # Full logout by redirections if any targets = request.session.pop('logout_redirections', None) if targets:
Sinon on peut pousser je pense.
Mis à jour par Mikaël Ates il y a environ 8 ans
- Fichier 0001-Handle-logout-by-redirection-from-plugins.patch 0001-Handle-logout-by-redirection-from-plugins.patch ajouté
- Assigné à changé de Mikaël Ates à Benjamin Dauvergne
J'ai ajouté next_url en fin de liste, car celle-ci est traitée avec pop(0), quelques commentaires et messages de debug.
Mis à jour par Mikaël Ates il y a environ 8 ans
- Statut changé de Nouveau à Résolu (à déployer)
- % réalisé changé de 0 à 100
Appliqué par commit authentic2|9ae46032945172b9c03faa24f48651a77ec7008e.
Mis à jour par Benjamin Dauvergne il y a environ 8 ans
- Statut changé de Résolu (à déployer) à Solution déployée
Mis à jour par Benjamin Dauvergne il y a plus de 6 ans
- Statut changé de Solution déployée à Fermé
Handle logout by redirection from plugins (fixes #9195).