[SPIP Zone] Plugin forms & tables : petit suggestion concernant l'export

Je dois quand même avouer que forms & tables est une petite merveille (sauf concernant la doc ;)).

Dans un cadre associatif, je viens d'avoir besoin à ce que plusieurs personnes puissent compléter et modifier le contenu d'une table particulière. Comme j'utilise accès restreint, il suffit de placer l'article avec <form1> et <table1> au bon endroit.

Dans le même temps, j'ai besoin que les rédacteurs en questions puissent récupérer la table au format Excel. Génial, forms a table le permet.... dans l'espace privé. Et je ne tiens pas à tous les transformer en admins.

J'ai donc rajouter un lien sur l'article qui contient le formulaire pointant vers spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download

Quand moi, admin, je suis clique dessus , je télécharge bien le fichier Excel. Mais un simp;e rédacteur ne peut pas. Une grosse solution à la va vite, je supprime dans action/forms_telecharger.php (lignes 25/28) et dans inc/forms_export.php (lignes 80/81) les deux conditions qui vérifient les droits d'administrer une table et, ô miracle, ça marche. N'importe qui, en cliquant sur le lien précédent, peut télécharger la table au format Excel.

Mais cette solution est TRES TRES TRES MAUVAISES. Outre le fait que je modifie un fichier du plugin (j'aime pas ca), cela introduit une grosse faille de sécurité. N'importe qui peut maintenant télécharger n'importe quelle table au format Excel.
Ce n'est donc pas une bonne solution mais cela me donné l'idée d'une suggestion :

Pourrais-t-on, pour un formulaire ou une table, pouvoir spécifier si la table en question peut être télécharger dans l'espace publique, éventuellement avec un mot de passe que l'on spécifie.
Une URL du type spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download (sans mot de passe) ou spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download&mdp=1234567890 (avec mot de passe) permettrait alors de télécharger les données de la table au format Excel, action/forms_telecharger.php et inc/forms_export.php vérifiant si l'export public est autorisée et, le cas échéant, le mot de passe. Si l'export doit être limité qu'à certains utilisateurs, on pense à utiliser un mot de passe très compliqué et on met le lien sur une page en accès restreint.

Autre intérêt : supposons que certaines applications ait besoin du contenu de cette base. On peut utiliser un SPIP avec forms & table pour gérer le contenu de la base, et l'application peut récupérer en temps réel le contenu de la base de données par HTTP.

Il est pas beau le monde ?

Enfin, dernière petite suggestion, une option permettant de supprimer, dans l'espace public, un enregistrement. En effet, on peut déjà spécifiant qu'un enregistrement est modifiable dans l'espace public. Mais il est impossible de le supprimer. Or, quand le formulaire se situe dans une zone restreinte utilisée comme intranet, on peut avoir que les personnes puissent modifier les données, mais également les supprimer.

Voili voilou.

Joseph

Joseph a écrit :

Je dois quand même avouer que forms & tables est une petite merveille (sauf concernant la doc ;)).

Dans un cadre associatif, je viens d'avoir besoin à ce que plusieurs personnes puissent compléter et modifier le contenu d'une table particulière. Comme j'utilise accès restreint, il suffit de placer l'article avec <form1> et <table1> au bon endroit.

Dans le même temps, j'ai besoin que les rédacteurs en questions puissent récupérer la table au format Excel. Génial, forms a table le permet.... dans l'espace privé. Et je ne tiens pas à tous les transformer en admins.

J'ai donc rajouter un lien sur l'article qui contient le formulaire pointant vers spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download

Quand moi, admin, je suis clique dessus , je télécharge bien le fichier Excel. Mais un simp;e rédacteur ne peut pas. Une grosse solution à la va vite, je supprime dans action/forms_telecharger.php (lignes 25/28) et dans inc/forms_export.php (lignes 80/81) les deux conditions qui vérifient les droits d'administrer une table et, ô miracle, ça marche. N'importe qui, en cliquant sur le lien précédent, peut télécharger la table au format Excel.

il faut mieux personaliser le autoriser_administrer_table en renvoyant true pour la table concernée.

Pourrais-t-on, pour un formulaire ou une table, pouvoir spécifier si la table en question peut être télécharger dans l'espace publique, éventuellement avec un mot de passe que l'on spécifie.
Une URL du type spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download (sans mot de passe) ou spip.php?action=forms_telecharger&arg=1&delim=TAB&var_mode=download&mdp=1234567890 (avec mot de passe) permettrait alors de télécharger les données de la table au format Excel, action/forms_telecharger.php et inc/forms_export.php vérifiant si l'export public est autorisée et, le cas échéant, le mot de passe. Si l'export doit être limité qu'à certains utilisateurs, on pense à utiliser un mot de passe très compliqué et on met le lien sur une page en accès restreint.
...

C'est pas les idées qui manque :slight_smile: ... mais la doc :stuck_out_tongue:
Cedric

cedric.morin a écrit :

C'est pas les idées qui manque :slight_smile: ... mais la doc :stuck_out_tongue:
Cedric

Et le temps lol
Je dois rendre ma thèse fin de semaine prochaine je devrai donc avoir un peu plus de temps.

Je n'ose coder les deux petites suggestions proposées car je ne connais pas toutes les subtilités du code de f&t, mais je veux bien écrire un début de doc à partir de ma petite expérience.
C'est un échange de bons procédés non ?

joseph

Joseph a écrit :

Je dois quand même avouer que forms & tables est une petite merveille (sauf concernant la doc ;)).

Dans un cadre associatif, je viens d'avoir besoin à ce que plusieurs personnes puissent compléter et modifier le contenu d'une table particulière. Comme j'utilise accès restreint, il suffit de placer l'article avec <form1> et <table1> au bon endroit.

Reste un petit souci. En effet, on ne peut modifier que les données que nous avons nous mêmes-créées. F&t nous identifie soit par notre id_auteur, soit par un cookie.

Que se passe-t-il lorsque je mets dans un même article <form1> et <table1> ?
En remplissant le formulaire, je créé une nouvelle donnée.
Sous le formulaire, je vois toutes les données existantes dans un tableau.
Si je clique, dans le tableau, sur la loupe à coté d'une donnée que j'ai créée, la page se recharge, le formulaire est pré-rempli avec les infos saisies. Je peux alors les modifier puis valider le formulaire. Tout va bien.

Si je clique, dans le tableau, sur la loupe à côté d'une donnée que je n'ai pas créée, la page se recharge. Comme je ne suis pas autorisé à modifier cette donnée, le formulaire n'est pas pré rempli. Cependant, dans le code HTML du formulaire, il y a un input hidden avec l'id_donnee en cours. Ce qui fait que si je rempli le formulaire et que je valide, je modifie cette donnee alors que je n'en ai pas le droit !!

Ca c'était le bug. Maintenant, une petite suggestion pour permettre à f&t d'être un outil collaboratif pour la gestion d'une table.
Il faudrait rajouter, dans les propriétés d'un formulaire, en plus de données non modifiables et de données modifiables par leur auteur, l'item données modifiables par tous.
De plus, toujours dans cette même logique, la possibilité de pouvoir supprimer une donnée depuis l'espace public, par son auteur ou par tous.

Voili voilou

Cordialement