Ajout de documents depuis le site public (hash)

Bonjour,

Je souhaite creer un espace membres pour les sites de mon entreprise.
Grace a l'evolution de SPIP et aux plugins je tente de creer mon propre plugin
pour cela et l'utiliser sur nos sites(tous en spip 1.9.1).

Cet espace membres doit permettre aux visiteurs de s'inscrire, editer un profil
et leur page personelle, poster des articles,... le tout sous forme de
pseudo-blog et depuis le site public.

Grace au plugin de Profil Etendus deja disponible (que j'ai adapte pour mes
besoins) j'arrive a permettre aux membres de poster un article, mais la gestion
de documents pose des problemes.

Le probleme est la verification du hash de l'auteur. Je reprends le formulaire
disponible dans la fonction formulaire_upload() disponible dans
ecrire/inc/documents.php.

une fois le bouton 'upload' enclenche, nous sommes rediriges vers spip.php avec
en parametre invisible action=joindre.

joindre tente de verifier le hash de l'auteur, et c'est a chaque fois un echec.
Le probleme se trouve dans la fonction generer_action_auteur() -inc/actions.php
ligne 73-. Le probleme est dans la partie suivante du code:

<?
static $id_auteur=0, $pass;
if ($id_auteur) {
  list($id_auteur, $pass) = caracteriser_auteur();
}
?>

Ainsi lors du premier passage dans mon formulaire, la variable $id_auteur est
declaree en statique avec la valeur 0. On ne passe donc pas par
caracteriser_auteur et aucun pass n'est trouve.

Lors de la verification, $id_auteur a pris la valeur de l'auteur de la session,
ainsi on passe par caracteriser_auteur, on trouve la valeur 'pass' de la table
'spip_auteur'... bref le calcul du hash retourne une valeur completement
differente.

Je ne comprends pas l'interet de cette declaration statique et du test qui suit.
Je remplace le code precedent par:

<?
$id_auteur=$GLOBALS['auteur_session']['id_auteur'];
list($id_auteur, $pass) = caracteriser_auteur($id_auteur);
?>

Et le bloc d'upload fonctionne dans mon plugin et toujours dans spip.

Pourquoi le code est il ainsi? Ais-je ouvert une faille dans la securite ou la
continuite du processus?

Merci de donner votre avis.

Benoit.

Salut,

je pense que tu ne travailles pas avec la derniere version 1.9
ces problemes ont été corrigés depuis (c'est sans doute deja dans la derniere revision de la 1.9.2 telechargeable sur spip.net).

ceci dit, il y a peut etre encore des choses à ameliorer sur la gestion des actions, mais la version dev a beaucoup bougé sur la gestion des actions, les demandes d'ameliorations sont possibles, mais uniquement sur la branche de developpement.
Ce genre de choses se discute sur la liste spip-dev et c'est le bon moment pour exposer des besoins, l'API de Spip se construit au fil de l'eau, les retours d'utilisations sont important.
Par contre, il faut suivre la version de dev sur le SVN (meme si tu ne fais pas suivre tout de suite le code de ton plugin)

Benoit a écrit :

Bonjour,

Je souhaite creer un espace membres pour les sites de mon entreprise.
Grace a l'evolution de SPIP et aux plugins je tente de creer mon propre plugin
pour cela et l'utiliser sur nos sites(tous en spip 1.9.1).

Cet espace membres doit permettre aux visiteurs de s'inscrire, editer un profil
et leur page personelle, poster des articles,... le tout sous forme de
pseudo-blog et depuis le site public.

Grace au plugin de Profil Etendus deja disponible (que j'ai adapte pour mes
besoins) j'arrive a permettre aux membres de poster un article, mais la gestion
de documents pose des problemes.

Ca, tu devrais plutot venir en discuter sur spip-zone (d'ou le crosspost).
Plusieurs personnes ont visiblement fait des developpements autour de ce plugin mais chacun bosse dans son coin sans dire ce qu'il fait, c'est un peu dommage.

Si tu sais te servir de SVN, tu peux commiter tes modifs et ajouts sur profil_etendu, j'ai pas mal de petits gadgets qui fonctionnent en 1.8.3 et que je veux remonter dans ce plugin, autant mettre tout ca en commun...

Si il y a du code specifique, c'est pas tres grave, on le sortira après en le rendant optionnel, ce plugin n'est de toutes facons pas vraiment operationnel en l'etat.

J'ai moi aussi une version avec du code specifique dans la nature ca peut etre interessant de voir ou placer des points d'entrée pour modifier simplement le comportement.

Peux tu decrire un peu tes specificités ?

@++