Le 07/05/2020 à 20:53, nicod_ a écrit :
Mais sur un autre SPIP 3.2 en particulier, ça passe direct, on peut télécharger quand même les docs, je chercher à comprendre pourquoi...

J'ai compris le problème, il y a effectivement un bug dans certains cas.

Quand on a activé la constante, une requête est lancée pour vérifier si le document est attaché à un objet lui même attaché à une rubrique restreinte :
https://git.spip.net/spip-contrib-extensions/acces_restreint/src/tag/v4.0.0/inc/accesrestreint_autoriser.php#L269

Exemple de requête générée :
http://spip.pastebin.fr/62681

Si le document a uniquement un lien vers un article ou une rubrique, ça marche comme prévu : la requête ne renvoie rien et un visiteur non connecté ne voit pas le doc.

Mais si le document a un lien vers un autre objet (un auteur par exemple) dans spip_documents_liens, la requête renvoie bien l'id_document, et l'autorisation est donc donnée, ce qui n'est pas du tout ce qu'on veut.

Cela vient des deux clauses OR ((zzzd.objet NOT IN ('rubrique','article','breve','forum')), qui remontent donc un enregistrement s'il y a un lien vers un auteur, une patate ou autre.

C'est généré ici :
https://git.spip.net/spip-contrib-extensions/acces_restreint/src/tag/v4.0.0/public/accesrestreint.php#L256

Cedric, si tu as suivi mon raisonnement (que je peux reproduire maintenant), qu'en penses tu ?


--
nicod_
_______________________________________________
liste: https://listes.rezo.net/mailman/listinfo/spip-dev
doc: https://www.spip.net/
dev: https://core.spip.net/
irc://irc.freenode.net/spip

Répondre à