PnX-SI / UsersHub-authentification-module

Module Flask d'authentification de UsersHub
GNU General Public License v3.0
5 stars 13 forks source link

Amélioration de la gestion des tokens invalides + Gestion des exceptions + Helpers sur AppUser #7

Closed ksamuel closed 7 years ago

ksamuel commented 7 years ago

Bonjour,

Après quelques tests je me suis apperçu que certaines exceptions étaient retournées au lieux d'être raisées. Par ailleurs, en cas de token invalide, on ne pouvait pas faire de redirection optionelle comme avec les token expirés. Enfin en cas de problème avec le token, le cookie restait, ce qui pouvait induire l'utilisateur dans une boucle.

Voici une PR qui propose une solution a ces 3 problèmes.

ksamuel commented 7 years ago

Je viens de rajouter un nouveau commit qui permet de choisir de désactivé la capture de toutes les exceptions par @check_auth.

Par défaut et pour rester compatible avec l'ancienne implémentation, la fonctionalité est désactivée et demande que le flag de configuration TRAP_ALL_EXCEPTIONS soit passé à False pour l'activer volontairement.

En effet le try/except de @check_auth est très large et attrape tout enfant de la classe Exception, ce qui est presque toutes les classes d'erreurs en Python. Cela signifie que les pages d'erreur qui s'affichent normalement en mode DEBUG ainsi que les handlers pour les 404, 403, 500, etc. ne s'affichent plus pour toute vue protégée par @check_auth.

samuelpriou commented 7 years ago

Salut @amandine-sahl , est ce que tu as eu le temps de jeter un coup d'oeil à cette PR ? A++

ksamuel commented 7 years ago

Dans ce dernier changeset, je rajoute un "relationship" helper sur le model AppUser, ce qui permet de récupérer le user ou l'application depuis AppUser simplement en faisant une lecture d'attribut:

In [1]: u = AppUser.query.all()[0]
In [2]: u.role
Out[2]: <User ''test'' id='1'>
samuelpriou commented 7 years ago

Merci Amandine. A+