Projet

Général

Profil

Development #48367

Faire une page de refus d'accès au lieu de retourner une 403

Ajouté par Mikaël Ates (de retour le 29 avril) il y a plus de 3 ans. Mis à jour il y a plus de 3 ans.

Statut:
Fermé
Priorité:
Normal
Assigné à:
Catégorie:
-
Version cible:
-
Début:
06 novembre 2020
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:
Non

Description

Il se peut que l'utilisateur arrive sur le backoffice chrono alors qu'il n'a pas de droit d'accès.

Plutôt que de retourner une 403 moche, il faudrait afficher une page indiquant "Aucun agenda accessible" (et aucun bouton).


Fichiers

0001-manager-add-a-403-error-page-48367.patch (1,79 ko) 0001-manager-add-a-403-error-page-48367.patch Nicolas Roche, 20 novembre 2020 17:58
0001-manager-add-a-403-error-page-48367.patch (1,89 ko) 0001-manager-add-a-403-error-page-48367.patch Nicolas Roche, 20 novembre 2020 18:38
0001-manager-add-a-403-error-page-48367.patch (1,99 ko) 0001-manager-add-a-403-error-page-48367.patch Nicolas Roche, 23 novembre 2020 15:45
Screenshot_2020-11-23 Chrono - dsd.png (14,7 ko) Screenshot_2020-11-23 Chrono - dsd.png Frédéric Péters, 23 novembre 2020 16:13
0001-manager-add-a-403-error-page-48367.patch (1,99 ko) 0001-manager-add-a-403-error-page-48367.patch Nicolas Roche, 25 novembre 2020 12:06
0003-manager-remove-manager_required-decorated-include-fo.patch (1,74 ko) 0003-manager-remove-manager_required-decorated-include-fo.patch Nicolas Roche, 02 décembre 2020 18:21
0002-manager-add-a-403-error-page-48367.patch (12,3 ko) 0002-manager-add-a-403-error-page-48367.patch Nicolas Roche, 02 décembre 2020 18:21
0001-tests-correct-role-assignation-on-a-test-48367.patch (1,06 ko) 0001-tests-correct-role-assignation-on-a-test-48367.patch Nicolas Roche, 02 décembre 2020 18:21
0004-manager-add-a-403-error-page-48367.patch (1,83 ko) 0004-manager-add-a-403-error-page-48367.patch Nicolas Roche, 03 décembre 2020 11:58
0003-manager-keep-a-403-error-on-unavailability-calendars.patch (2,33 ko) 0003-manager-keep-a-403-error-on-unavailability-calendars.patch Nicolas Roche, 03 décembre 2020 11:58
0002-manager-set-a-didicated-403-response-on-home-page-48.patch (10,3 ko) 0002-manager-set-a-didicated-403-response-on-home-page-48.patch Nicolas Roche, 03 décembre 2020 11:58

Demandes liées

Lié à Gadjo - Development #48826: Ajout d'une classe big-msg-sorryFermé25 novembre 2020

Actions

Révisions associées

Révision ef55e9de (diff)
Ajouté par Nicolas Roche il y a plus de 3 ans

manager: set a dedicated 403 response on home page (#48367)

Historique

#1

Mis à jour par Mikaël Ates (de retour le 29 avril) il y a plus de 3 ans

  • Projet changé de Combo à Chrono
#2

Mis à jour par Nicolas Roche il y a plus de 3 ans

#3

Mis à jour par Frédéric Péters il y a plus de 3 ans

Je pense qu'il faudrait travailler le rendu et le texte de la page pour 1/ correspondre aux pages normales au niveau du titre notamment, 2/ pour exprimer de manière moins cash qu'il n'y a pas d'agenda disponible visible pour l'usager.

#4

Mis à jour par Nicolas Roche il y a plus de 3 ans

(yep, merci Fred, je ne suis vraiment pas inspiré pour le message)

#5

Mis à jour par Frédéric Péters il y a plus de 3 ans

Bon, faut pas inventer un h4 ici; je serais plutôt pour https://styleguide.entrouvert.com/motifs/etat-initial-vide/ (j'en verrais même peut-être une variation avec l'icône remplacée par un :( ); et côté message ne pas écrire "for current user", écrire un message qui s'adresse gentiment à lui, façon "Cet écran reprend les agendas que vous pouvez consulter. Malheureusement il n'y en a aucun configuré pour le moment.". (gentiment pousser ça comme non pas une erreur de navigation de l'usager mais une erreur de configuration qui n'est pas sa faute).

#6

Mis à jour par Nicolas Roche il y a plus de 3 ans

Patch qui reprend https://styleguide.entrouvert.com/motifs/etat-initial-vide/

J'ai mis le texte en anglais mais je pensais à ça en français :
"Cet écran reprend les agendas que vous pouvez consulter.
Malheureusement, il n'y en a encore aucun de configuré pour qu'il vous soit accessible."

j'en verrais même peut-être une variation avec l'icône remplacée par un :(

Il s'agirait de faire un ticket lié dans gadjo,
  • qui utilise le smiley fa-frown-o ("\f119") de la fonte awesome,
  • et de dériver le style "infonotice" (pour pas inventer un nouveau truc) ?
#7

Mis à jour par Frédéric Péters il y a plus de 3 ans

qui utilise le smiley fa-frown-o ("\f119") de la fonte awesome,

Pour l'icône d'info on a une vraie image, on peut pour moi faire pareil ici et ça pourra être plus élégant; genre dans l'idée rapidement fait la capture attachée. (et oui côté classe ça serait un big-msg-sorry comme on a big-msg-nfo).

#8

Mis à jour par Nicolas Roche il y a plus de 3 ans

#9

Mis à jour par Nicolas Roche il y a plus de 3 ans

Est-ce qu'il faut que je revienne à la ligne entre les deux phrases ?
(je n'ai pas trouvé comment le faire proprement)

#10

Mis à jour par Frédéric Péters il y a plus de 3 ans

Le message est adapté à la page d'accueil, pas pour une erreur qui apparaitrait ailleurs; je pense qu'il faut modifier le urls.py de la racine pour passer de manager_required à login_required et modifier le HomepageView pour faire le contrôle d'accès, et si aucun agenda disponible, que le big-msg-sorry soit affiché (idéalement avec un status_code 403 mais ça devient un détail).

(aussi, bien vérifier que les accès sur toutes les vues sont contrôlés mais ça doit déjà être le cas).

#11

Mis à jour par Nicolas Roche il y a plus de 3 ans

0001: au passage j'ai corrigé un test

0002:

J'ai fait le tour des urls de /manage/. Mis à part '/manage/agendas/events.csv' qui fourni publiquement un exemple du format des événements à importer, je n'ai rien vu qui ne soit pas contrôlé.
Pour le template 403 de base j'ai mis ce message :

Forbidden access, sorry.
Some configuration should be set if you need to access this page.

J'ai inclus le message discuté plus haut pour les utilisateurs qui arrivent sur la page d’accueil sans avoir accès à aucun calendrier, directement dans le template de la vue. Et pour renvoyer une 403, j'ai redéfini django/views/generic/list.py::BaseListView:get()

J'ai appliqué la même modification aux agendas d'indisponibilités.

J'ai du corriger 3 tests :
  • test_agenda_day_view et test_virtual_agenda_day_view parce que l'on fait 2 requêtes SQL de moins (j'ai pas chercher à comprendre).
  • test_unavailability_calendar_homepage_permission qui utilise le bouton d'action présent sur la page d’accueil, qui à présent est retournée (à l'identique) en 403.

0003: Je ne sais pas si je dois ou non supprimer le code de manager_required (qui n'est plus utilisé) car je me dis que ça pourrait resservir.

#12

Mis à jour par Frédéric Péters il y a plus de 3 ans

Pour le template 403 de base j'ai mis ce message :

Je me dis que celui-là pourrait être distribué par Gadjo, et suffisamment générique pour marcher partout.

J'ai appliqué la même modification aux agendas d'indisponibilités.

Pour moi là on est déjà sur une page à l'intérieur, on peut aller sur l'erreur générique.

0003: Je ne sais pas si je dois ou non supprimer le code de manager_required (qui n'est plus utilisé) car je me dis que ça pourrait resservir.

Oui supprimons le code mort; il continuera de toute façon à exister dans l'historique.

#13

Mis à jour par Nicolas Roche il y a plus de 3 ans

0002 : message adapté sur la page d'accueil (remarques prises en compte)

Pour moi là on est déjà sur une page à l'intérieur, on peut aller sur l'erreur générique.

0003: corrige la régression sur /manage/unavailability-calendars/ afin de continuer
à retourner une 403 pour les utilisateurs qui n'ont pas de droits sur les agendas indisponibilité.

Je me dis que celui-là pourrait être distribué par Gadjo

0004 : template 403 qui inclut un message générique posé sur gadjo.
Parce qu'un template 403 chargé directement sur gadjo ne ferait pas apparaître le titre. (cf https://dev.entrouvert.org/issues/48367#note-3)

Le template gadjo ressemblerait à ça :

{% load i18n %}

<div class="big-msg-sorry">
  <p>{% trans 'Forbidden access, sorry.' %}</p>
  <p>{% trans 'Some configuration should be set if you need to access this page.' %}</p>
</div>


Dites-moi si ça conviendrait, que je crée le ticket lié dans gadjo,
et éventuellement que je déplace 0004 dans un nouveau ticket (pour pouvoir faire tourner les tests ici).

#14

Mis à jour par Frédéric Péters il y a plus de 3 ans

Parce qu'un template 403 chargé directement sur gadjo ne ferait pas apparaître le titre

On s'en foutrait.

#15

Mis à jour par Nicolas Roche il y a plus de 3 ans

  • Statut changé de Information nécessaire à Solution proposée

Yep. En fait j'ai l'impression qu'il faudra de toute façon poser un template 403 dans chrono pour pouvoir charger celui de gadjo.
Quoi qu'il en soit, je réalise que 0004 n'a pas sa place ici, je le retire.

#16

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Solution proposée à Solution validée

Je serais pour réunir tout ça en un seul patch, corriger "didicated" en "dedicated" dans l'intitulé, et ça sera ok.

#17

Mis à jour par Nicolas Roche il y a plus de 3 ans

  • Statut changé de Solution validée à Résolu (à déployer)
commit ef55e9de5680beccb37a2f31650d3fd39e0eeda0
Author: Nicolas ROCHE <nroche@entrouvert.com>
Date:   Thu Dec 3 10:54:56 2020 +0100

    manager: set a dedicated 403 response on home page (#48367)
#18

Mis à jour par Frédéric Péters il y a plus de 3 ans

  • Statut changé de Résolu (à déployer) à Solution déployée

Formats disponibles : Atom PDF