De nouveaux pipelines ? #3813

Open
opened 5 years ago by miros · 4 comments
miros commented 5 years ago

Hello,

Je souhaiterai ajouter 2 pipelines au core de SPIP :

  • post_login qui serai exécuté après le connexion d'un utilisateur, utile pour par exemple compléter les variables de session.
  • post_inscription qui serait exécuté après qu'un utilisateur ai validé son inscription (dans l'idéal il faudrait aussi passer par post_login).

Cela fait plusieurs fois que j'ai besoin de ce type de pipelines, et malheureusement il faut bricoler d'autres pipelines pour arriver à un résultat similaire (pour faire post_inscription il faut passer par post_edition en fessant des testes sur les statut d'auteurs...).

Une bonne idée ?

Hello, Je souhaiterai ajouter 2 pipelines au core de SPIP : - post_login qui serai exécuté après le connexion d'un utilisateur, utile pour par exemple compléter les variables de session. - post_inscription qui serait exécuté après qu'un utilisateur ai validé son inscription (dans l'idéal il faudrait aussi passer par post_login). Cela fait plusieurs fois que j'ai besoin de ce type de pipelines, et malheureusement il faut bricoler d'autres pipelines pour arriver à un résultat similaire (pour faire post_inscription il faut passer par post_edition en fessant des testes sur les statut d'auteurs...). Une bonne idée ?
b_b commented 5 years ago
Owner

Version cible mise à 3.2

**Version cible mise à 3.2**
Owner
  • preparer_visiteur_session permet de completer la session d'un auteur (à chaque chargement de la session donc et pas seulement post-login)
  • le pipeline formulaire_traiter sur le formulaire login permet aussi d'avoir la main lors de sa connexion post login donc (et donc une seule et unique fois)
  • pour la post inscription c'est en effet le pipeline post_edition, action=instituer et statut_ancien='nouveau'

On pourrait ajouter un second appel post_edition plus explicite

$ git diff
diff --git a/ecrire/action/inscrire_auteur.php b/ecrire/action/inscrire_auteur.php
index 8ed27a6a27..050685ea1b 100644
--- a/ecrire/action/inscrire_auteur.php
+++ b/ecrire/action/inscrire_auteur.php
`` -317,7 +317,23 `` function confirmer_statut_inscription($auteur) {
 	autoriser_exception('modifier', 'auteur', $auteur['id_auteur']);
 	include_spip('action/editer_auteur');
 	// changer le statut
-	auteur_modifier($auteur['id_auteur'], array('statut' => $s));
+	$set = array('statut' => $s);
+	auteur_modifier($auteur['id_auteur'], $set);
+
+	// on appelle une seconde fois post_edition avec l'info confirmer_statut_inscription
+	pipeline('post_edition',
+		array(
+			'args' => array(
+				'table' => 'spip_auteurs',
+				'id_objet' => $auteur['id_auteur'],
+				'action' => 'confirmer_statut_inscription',
+				'statut_ancien' => $auteur['statut'],
+			),
+			'data' => $set
+		)
+	);
+

mais avoir un double appel sur post_edition peut etre embetant car vu des clients du pipeline c'est comme si on faisait deux fois une modif du statut :(

Et sinon il faudrait créer un nouveau pipeline, mais je ne suis pas sur qu'il apporte grand chose de plus...
Version cible mise à 4.0

* preparer_visiteur_session permet de completer la session d'un auteur (à chaque chargement de la session donc et pas seulement post-login) * le pipeline formulaire_traiter sur le formulaire login permet aussi d'avoir la main lors de sa connexion post login donc (et donc une seule et unique fois) * pour la post inscription c'est en effet le pipeline post_edition, action=instituer et statut_ancien='nouveau' On pourrait ajouter un second appel post_edition plus explicite <pre> $ git diff diff --git a/ecrire/action/inscrire_auteur.php b/ecrire/action/inscrire_auteur.php index 8ed27a6a27..050685ea1b 100644 --- a/ecrire/action/inscrire_auteur.php +++ b/ecrire/action/inscrire_auteur.php `` -317,7 +317,23 `` function confirmer_statut_inscription($auteur) { autoriser_exception('modifier', 'auteur', $auteur['id_auteur']); include_spip('action/editer_auteur'); // changer le statut - auteur_modifier($auteur['id_auteur'], array('statut' => $s)); + $set = array('statut' => $s); + auteur_modifier($auteur['id_auteur'], $set); + + // on appelle une seconde fois post_edition avec l'info confirmer_statut_inscription + pipeline('post_edition', + array( + 'args' => array( + 'table' => 'spip_auteurs', + 'id_objet' => $auteur['id_auteur'], + 'action' => 'confirmer_statut_inscription', + 'statut_ancien' => $auteur['statut'], + ), + 'data' => $set + ) + ); + </pre> mais avoir un double appel sur post_edition peut etre embetant car vu des clients du pipeline c'est comme si on faisait deux fois une modif du statut :( Et sinon il faudrait créer un nouveau pipeline, mais je ne suis pas sur qu'il apporte grand chose de plus... **Version cible mise à 4.0**
Owner

Puisqu'on peut faire ce qu'on souhaite avec l'existant, amha on peut repousser à 3.4 ou fermer.

Puisqu'on peut faire ce qu'on souhaite avec l'existant, amha on peut repousser à 3.4 ou fermer.
Owner

Version cible mise à 4.1

**Version cible mise à 4.1**
Sign in to join this conversation.
No Milestone
No project
No Assignees
3 Participants
Notifications
Due Date

No due date set.

Dependencies

This issue currently doesn't have any dependencies.

Loading…
There is no content yet.