Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Ajout d'une page de gestion des sessions #6021

Merged
merged 1 commit into from
Mar 10, 2024

Conversation

Situphen
Copy link
Member

@Situphen Situphen commented Feb 4, 2021

Ajout d'une page de gestion des sessions avec la liste des sessions de l'utilisateur et la possibilité de supprimer les sessions autres que la session actuelle.

  • Ajout d'un intergiciel qui garde en mémoire pour chaque session l'adresse IP, le user agent et le timestamp actuels. Comme tout intergiciel, ce code s'exécute à chaque requête donc il est le plus minimaliste possible mais il faudra s'assurer que les performances des requêtes ne sont pas dégradées.
  • Utilisation d'un modèle de session personnalisé, hérité du modèle de session actuel (le modèle cached_db de Django), tel que proposé dans la documentation de Django. Cela ne devrait pas poser de soucis, mis à part le fait que tous les utilisateurs devront se reconnecter après la mise en production.

QA :

  • Vérifier le bon fonctionnement du site web
  • Se connecter depuis plusieurs appareils pour vérifier le bon fonctionnement de la page de gestion des sessions (accessible depuis les paramètres), notamment le fait de pouvoir déconnecter les autres sessions

@coveralls
Copy link

coveralls commented Feb 4, 2021

Coverage Status

coverage: 88.674% (+0.02%) from 88.659%
when pulling 1845fd2 on Situphen:sessions
into db60cd7 on zestedesavoir:dev.

@AmauryCarrade AmauryCarrade added C-Back Concerne le back-end Django S-Évolution Ajoute de nouvelles fonctionnalités labels Feb 8, 2021
@Situphen Situphen force-pushed the sessions branch 2 times, most recently from cf1919a to 119c3d8 Compare October 12, 2022 11:46
@Situphen Situphen force-pushed the sessions branch 2 times, most recently from 43b94c3 to a665806 Compare May 23, 2023 21:23
@Situphen Situphen changed the title Amélioration du fonctionnement des sessions Ajout d'une page de gestion des sessions May 23, 2023
@Situphen Situphen marked this pull request as ready for review May 23, 2023 22:04
Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Il faut faire un petit rebase.

Est-ce que tu pourrais ajouter des tests, stp ? (ne serait-ce que pour s'assurer que les URLs que tu rajoutes peuvent être appelées correctement, pas forcément besoin de vérifier que ce qui est affiché est correct)

zds/middlewares/managesessionsmiddleware.py Outdated Show resolved Hide resolved
@Situphen Situphen force-pushed the sessions branch 2 times, most recently from fe4f79d to f4de4cd Compare June 5, 2023 18:20
Copy link
Member Author

@Situphen Situphen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Modifications :

  • if user is not None and user.is_authenticated
  • if session_key and session_key != self.request.session.session_key
  • ajout des tests

Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Je viens de faire une revue de code un peu plus poussée (j'ai même été un peu tatillon). Une fois que les points que j'ai soulevés seront corrigés, je testerai, mais ça me semble déjà pas mal.

requirements.txt Outdated Show resolved Hide resolved
templates/member/settings/sessions.html Show resolved Hide resolved
templates/member/settings/sessions.html Outdated Show resolved Hide resolved
zds/member/views/sessions.py Outdated Show resolved Hide resolved
zds/member/views/sessions.py Show resolved Hide resolved
zds/middlewares/managesessionsmiddleware.py Show resolved Hide resolved
@AmauryCarrade
Copy link
Member

Hello! Est-ce que cette PR est toujours d'actualité, et est-ce que de l'aide serait souhaitée en plus de la future QA ?

@philippemilink
Copy link
Member

Pour moi (mais je ne suis pas l'auteur), cette PR est toujours d'actualité, il faut seulement prendre en compte mes remarques :)

@Situphen
Copy link
Member Author

Je confirme que cette PR est encore d'actualité mais je n'ai pas la motivation pour me remettre dedans en ce moment. @AmauryCarrade Si tu as envie de la reprendre, n'hésites pas, je peux te donner les droits sur ma branche ou tu peux créer une nouvelle PR. Il faut simplement me prévenir histoire que ça ne coincide pas avec une reprise de la motivation de mon côté :D

@Situphen Situphen added the S-Zombie Ticket ou PR oubliée label Mar 9, 2024
@Situphen Situphen force-pushed the sessions branch 3 times, most recently from 4ebfa0c to 5cd96a9 Compare March 9, 2024 23:29
@Situphen Situphen removed the S-Zombie Ticket ou PR oubliée label Mar 9, 2024
@Situphen
Copy link
Member Author

Situphen commented Mar 9, 2024

Bon, j'ai eu un élan de motivation donc j'ai pu mettre à jour cette PR et prendre en compte les différentes remarques !

Copy link
Member

@philippemilink philippemilink left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

QA OK ✔️

@philippemilink philippemilink merged commit 2b2215e into zestedesavoir:dev Mar 10, 2024
12 checks passed
@Situphen Situphen deleted the sessions branch March 10, 2024 13:55
philippemilink added a commit to philippemilink/zds-site that referenced this pull request Mar 10, 2024
Ce paramètre possède la même valeur que sa définition dans
zds/settings/abstract_base/django.py, quelque soit l'environnement
d'exécution.

Fait suite à la PR zestedesavoir#6021
Situphen pushed a commit that referenced this pull request Mar 10, 2024
Ce paramètre possède la même valeur que sa définition dans
zds/settings/abstract_base/django.py, quelque soit l'environnement
d'exécution.

Fait suite à la PR #6021
philippemilink added a commit to philippemilink/zds-site that referenced this pull request Aug 25, 2024
Bug introduit par 2b2215e (PR zestedesavoir#6021),
où le backend pour gérer les sessions passe de
django.contrib.sessions.backends.cached_db à
zds.utils.custom_cached_db_backend, ce qui change la table utilisée pour
stocker les sessions et le modèle à utiliser pour les manipuler. La vue
qui compte le nombre de sessions pour Munin n'a pas été mise à jour
utiliser le nouveau modèle.

- Utilise les classes de sessions définies dans les paramètres, plutôt
  que forcément django.contrib.sessions
- Ajoute un test pour vérifier que le nombre de sessions rapporté par
  Munin est correct
- Renomme l'import DBStore en CachedDBStore pour éviter une confusion
  sur quel backend est utilisé pour stocker les sessions
philippemilink added a commit to philippemilink/zds-site that referenced this pull request Aug 25, 2024
Le changement dans les sessions introduit par
2b2215e (PR zestedesavoir#6021) utilise une nouvelle
table utils_customsession pour stocker les sessions, tout en conservant
la table django_session.
philippemilink added a commit to philippemilink/zds-site that referenced this pull request Aug 25, 2024
Bug introduit par 2b2215e (PR zestedesavoir#6021),
où le backend pour gérer les sessions passe de
django.contrib.sessions.backends.cached_db à
zds.utils.custom_cached_db_backend, ce qui change la table utilisée pour
stocker les sessions et le modèle à utiliser pour les manipuler. La vue
qui compte le nombre de sessions pour Munin n'a pas été mise à jour
utiliser le nouveau modèle.

- Utilise les classes de sessions définies dans les paramètres, plutôt
  que forcément django.contrib.sessions
- Ajoute un test pour vérifier que le nombre de sessions rapporté par
  Munin est correct
- Renomme l'import DBStore en CachedDBStore pour éviter une confusion
  sur quel backend est utilisé pour stocker les sessions
Arnaud-D pushed a commit that referenced this pull request Sep 1, 2024
Bug introduit par 2b2215e (PR #6021),
où le backend pour gérer les sessions passe de
django.contrib.sessions.backends.cached_db à
zds.utils.custom_cached_db_backend, ce qui change la table utilisée pour
stocker les sessions et le modèle à utiliser pour les manipuler. La vue
qui compte le nombre de sessions pour Munin n'a pas été mise à jour
pour utiliser le nouveau modèle.

- Utilise les classes de sessions définies dans les paramètres, plutôt
  que forcément django.contrib.sessions
- Ajoute un test pour vérifier que le nombre de sessions rapporté par
  Munin est correct
- Renomme l'import DBStore en CachedDBStore pour éviter une confusion
  sur quel backend est utilisé pour stocker les sessions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
C-Back Concerne le back-end Django S-Évolution Ajoute de nouvelles fonctionnalités
Projects
Status: Done
Archived in project
Development

Successfully merging this pull request may close these issues.

4 participants