Development #7146
API exportant les menus du backoffice accessibles
0%
Description
De #7139 :
Pour alimenter le portail agent, mais aussi pour assurer une navigation transversale entre les espaces des différentes applications, on aurait un publik.js qui aurait comme donnée des infos de l'environnement tirées de l'hobo.json, et qui interrogerait les différentes applications pour connaitre leurs espaces accessibles (genre /backoffice/menu.json qui retourne [{'title': 'Atelier formulaires', 'url': 'https://.../forms/', 'icon': 'form'} ...]).
Fichiers
Demandes liées
Révisions associées
backoffice: export list of menu items as json (#7146)
backoffice: export list of menu items as json (#7146)
backoffice: export list of menu items as json (#7146)
backoffice: add jsonp support to backoffice/menu.json endpoint (#7146)
Historique
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-api-export-list-of-backoffice-menu-items-7146.patch ajouté
- Statut changé de Nouveau à En cours
- Patch proposed changé de Non à Oui
Ça vient après le merge admin/backoffice, particulièrement après "backoffice: refactor display of menu items (#6726)".
Donc, /api/backoffice.menu.json, avec comme clés label, url, slug et icon. (renommer en icon_class?).
Mis à jour par Frédéric Péters il y a presque 9 ans
- Lié à Development #7139: Portail agent et navigation transversale : publik.js ajouté
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier
0001-api-export-list-of-backoffice-menu-items-7146.patchsupprimé
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-api-export-list-of-backoffice-menu-items-7146.patch 0001-api-export-list-of-backoffice-menu-items-7146.patch ajouté
Mise à jour avec ajout d'entêtes CORS.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-api-export-list-of-backoffice-menu-items-7146.patch ajouté
Dans un dernier test j'avais par mégarde effacé un entête.
Mis à jour par Frédéric Péters il y a presque 9 ans
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier
0001-api-export-list-of-backoffice-menu-items-7146.patchsupprimé
Mis à jour par Frédéric Péters il y a presque 9 ans
- Patch proposed changé de Oui à Non
Et en fait ça aurait une meilleure place sous /backoffice/, pour qu'un SSO ait lieu automatiquement si nécessaire.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-backoffice-export-list-of-menu-items-as-json-7146.patch 0001-backoffice-export-list-of-menu-items-as-json-7146.patch ajouté
- Patch proposed changé de Non à Oui
Et cette fois-ci ça va être ok, peut-être.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-backoffice-export-list-of-menu-items-as-json-7146.patch 0001-backoffice-export-list-of-menu-items-as-json-7146.patch ajouté
Il veut vraiment pas, ce ticket, c'est fou.
Mis à jour par Frédéric Péters il y a presque 9 ans
En fait il faudrait en reparler parce que dans la pratique ça ne marche pas aussi bien que ça; l'appel ajax cors qui se fait vers http://foobar/.../menu.json, quand l'usager n'est pas déjà identifié, il y a redirection vers http://authentic/... et normalement du SSO qui se ferait tout seul, mais ce n'est pas le cas, la requête ne va pas au-delà de la première redirection (302 → authentic); il manque peut-être encore un truc côté cors mais en attendnat, ces .../menu.json, ils ne fonctionnent pas tant que l'usager ne s'est pas connecté individuellement sur les différents sites.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Est-ce que l'appel ajax est fait avec le flag withCredentials1 à true ?
Mis à jour par Frédéric Péters il y a presque 9 ans
Oui; je n'ai plus le détail sous les yeux, mais en gros, j'en étais arrivé à redirection ok vers authentic, bien configuré pour lui aussi faire une redirection et pas un POST de l'assertion, mais la deuxième redirection ne passait pas l'entête "origin" comme il fallait (il y était mis "null", si je me souviens bien).
Plus fondamentalement, c'était un raccourci pratique mais maintenant qu'il ne fonctionne pas, je ne suis pas sûr que logguer la personne sur tous les services pour afficher le menu soit une super idée.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Les seules références que je trouve parlant de Origin: null
disent que le cas ne se présente qu'en chargeant une page via un fichier local (file:///
) je ne vois pas bien comment cela pourrait être le cas ici...
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
Ok bug webkit: https://code.google.com/p/chromium/issues/detail?id=154967
Mis à jour par Frédéric Péters il y a presque 9 ans
Mais ces tests étaient faits avec Iceweasel.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
J'ai parlé trop vite, en fait c'est le comportement normal d'après la spec, on va peut-être pas pouvoir faire ce que l'on veut à part avec un header ACAO à "*".
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
L'extrait du ticket webkit:
I added the CORS redirect handling to WebKit a while back. It was only implemented for asynchronous requests.
I've been reviewing the standard and I think the code conforms to it. Here are the relevant sections:
http://www.w3.org/TR/cors/#redirect-steps
http://www.w3.org/TR/cors/#resource-sharing-checkIn the above reproduction steps, the first request's URL is cross-origin, and its origin is the page URL. The response is a 302 redirect with the appropriate access-control-allow-origin="test1.example.org" header so the redirect is allowed to proceed. As part of the redirect steps, the new request origin is set to "null" and it's URL is set to the value of the Location header.
The second request generates a response. The only way this second response can pass the resource sharing check is if it contains this header:
access-control-allow-origin="*"
Furthermore, the original XHR must not have "allow-credentials" set to true.
If no header is present, or if specific origins are specified, the response is rejected. The code seems consistent with the standard here.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
À la lecture je pense qu'il va aussi falloir qu'authentic et combo émettent le header Access-Control-Allow-Credentials: true
.
Mis à jour par Frédéric Péters il y a presque 9 ans
Pour dépasser tout ça, plus fondamentalement, je reviens avec mon commentaire "je ne suis pas sûr que logguer la personne sur tous les services pour afficher le menu soit une super idée."
Mis à jour par Frédéric Péters il y a presque 9 ans
(et Access-Control-Allow-Credentials est déjà positionné, sinon ça ne marcherait pas même une fois loggué).
Mis à jour par Thomas Noël il y a presque 9 ans
Frédéric Péters a écrit :
Pour dépasser tout ça, plus fondamentalement, je reviens avec mon commentaire "je ne suis pas sûr que logguer la personne sur tous les services pour afficher le menu soit une super idée."
Concernant les accès backoffice, ça ne me chiffonne pas beaucoup de logguer sur tous les backoffices (à moins que ta remarque exacte soit "techniquement c'est pas une super idée").
Ensuite, techniquement, s'il faut afficher un menu contextuel selon l'utilisateur et ses droits, je vois pas comment faire autrement que le loguer, ou équivalent. Tu as une autre idée en tête ?
Mis à jour par Frédéric Péters il y a presque 9 ans
L'alternative à laquelle je pensais c'était faire une requête ajax unique, sur le service courant (ou sur authentic en se disant que la personne y est connectée aussi), et que cet appel fasse le tour des différents services, par requêtes signées ?NameID=foobar.
Mis à jour par Benjamin Dauvergne il y a presque 9 ans
La nouvelle piste est de faire du JSONP qui reste plus souple (mais moins sécurisé) que CORS.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Fichier 0001-backoffice-add-jsonp-support-to-backoffice-menu.json.patch 0001-backoffice-add-jsonp-support-to-backoffice-menu.json.patch ajouté
Ajout de la sortie jsonp.
Mis à jour par Frédéric Péters il y a presque 9 ans
- Statut changé de En cours à Résolu (à déployer)
commit a1ce36d3e5af4c9bf7c92c221fab0f196b9c1c07 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Mon May 18 19:53:40 2015 +0200 backoffice: add jsonp support to backoffice/menu.json endpoint (#7146) commit 1be0db51de6ef4dd3b5fe4a19764b8d0133a90b4 Author: Frédéric Péters <fpeters@entrouvert.com> Date: Tue May 5 11:23:27 2015 +0200 backoffice: export list of menu items as json (#7146)
api: export list of backoffice menu items (#7146)