Projet

Général

Profil

Development #7146

API exportant les menus du backoffice accessibles

Ajouté par Frédéric Péters il y a presque 9 ans. Mis à jour il y a plus de 8 ans.

Statut:
Fermé
Priorité:
Haut
Assigné à:
Version cible:
-
Début:
05 mai 2015
Echéance:
% réalisé:

0%

Temps estimé:
Patch proposed:
Oui
Planning:

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

Lié à Publik - Development #7139: Portail agent et navigation transversale : publik.jsFermé05 mai 2015

Actions

Révisions associées

Révision a8d470cf (diff)
Ajouté par Frédéric Péters il y a presque 9 ans

api: export list of backoffice menu items (#7146)

Révision 52139619 (diff)
Ajouté par Frédéric Péters il y a presque 9 ans

backoffice: export list of menu items as json (#7146)

Révision 7bd19acf (diff)
Ajouté par Frédéric Péters il y a presque 9 ans

backoffice: export list of menu items as json (#7146)

Révision 1be0db51 (diff)
Ajouté par Frédéric Péters il y a presque 9 ans

backoffice: export list of menu items as json (#7146)

Révision a1ce36d3 (diff)
Ajouté par Frédéric Péters il y a presque 9 ans

backoffice: add jsonp support to backoffice/menu.json endpoint (#7146)

Historique

#1

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?).

#2

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é
#3

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 supprimé
#5

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.

#7

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 supprimé
#8

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.

#9

Mis à jour par Frédéric Péters il y a presque 9 ans

Et cette fois-ci ça va être ok, peut-être.

#11

Mis à jour par Thomas Noël il y a presque 9 ans

N'y voyant plus de malice, je « Ack »

#12

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.

#13

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

Est-ce que l'appel ajax est fait avec le flag withCredentials1 à true ?

[1]: https://quickleft.com/blog/cookies-with-my-cors/

#14

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.

#15

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...

#17

Mis à jour par Frédéric Péters il y a presque 9 ans

Mais ces tests étaient faits avec Iceweasel.

#18

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 à "*".

#19

Mis à jour par Benjamin Dauvergne il y a presque 9 ans

L'extrait du ticket webkit:

#9

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-check

In 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.

#20

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.

#21

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."

#22

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é).

#23

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 ?

#24

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.

#25

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.

#27

Mis à jour par Frédéric Péters il y a presque 9 ans

  • Priorité changé de Normal à Haut
#28

Mis à jour par Thomas Noël il y a presque 9 ans

Ack des 3

#29

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)
#30

Mis à jour par Thomas Noël il y a plus de 8 ans

  • Statut changé de Résolu (à déployer) à Fermé

Formats disponibles : Atom PDF