Exclure le contrôle du recaptcha pour certains composants

  • Posts: 246
  • Thank you received: 5
4 years 4 months ago #313550

Bonjour,

Le plugin hikashop recaptcha permet de protéger la création de compte Joomla. Il s'intègre à la "mécanique" Joomla en s'insérant aussi dans les formulaires "classiques" de Joomla (création de compte, contact, etc...). Le plugin prévoit aussi le traitement particulier de certains composants pour lesquels, soit il arrive à s'insérer (render), soit il bypass la vérification (return true).

Il faudrait que dans les options du plugin on puisse ajouter manuellement des composants pour lesquels on ne veut pas que ce plugin fasse de vérification du reCaptcha car cela bloque la suite du mécanisme.

Cas de figure :

Nous utilisons à la fois HikaShop et Fabrik sur plusieurs sites. Ce dernier permet de bâtir de puissantes applications spécifiques. Il dispose de ses propres plugins pour créer un compte User et pour afficher un recaptcha. En l'état, au moment du "createUser", le plugin Hika est déclenché et il fait un checkRecaptcha. Etant donné qu'il n'a pas fait un "render" car Fabrik n'est pas défini au début du onAfterRender, la validation est fausse et il génère un message d'erreur en interrompant le processus Fabrik.

Dans le onBeforeStoreUser, il y a une liste "hard coded" de composants qui bypasse le checkCaptcha si on n'est pas dans un contexte assumé par le "render" (captcha affiché).

Mais dans le onBeforeUserCreate, on fait le checkCaptcha sans ce contrôle.

J'ai donc fait la modif suivante :

	function onBeforeUserCreate(&$user, &$do){

		$app = JFactory::getApplication();
		if ($app->isAdmin() || (@$_REQUEST['option']=='com_updateme' && @$_REQUEST['ctrl']=='subscription' && @$_REQUEST['task']=='api')) return true;

		$this->_init();
		if(!$this->params->get('registration',1)){
			return true;
		}
// apchea
		$components = array('com_fabrik');
		if (in_array(@$_REQUEST['option'],$components)) return true;
// apchea
		$do = $this->_checkCaptcha();
	}

Il me semble que cette liste de composants "autorisés" devrait être définie au niveau de la classe et utilisée à cet endroit aussi ?

Evidemment, ce serait encore mieux qu'il soit possible d'ajouter Fabrik à la liste des composants assumés par votre plugin. Ce serait plus homogène. Mais c'est nettement plus compliqué ! :-)

Merci de prévoir une solution à minima pour ne pas avoir à "hacker" le plugin lors des prochaines mises à jour.

Laurent

Please Log in or Create an account to join the conversation.

  • Posts: 81511
  • Thank you received: 13066
  • MODERATOR
4 years 4 months ago #313562

Bonjour,

Merci de votre retour.
Notez qu'il n'y a pas de système de mise à jour automatique pour ce plugin. Donc cela veut dire que tant que vous n'installez pas la nouvelle version manuellement, il n'y aura rien à "hack" dans le plugin.
D'ailleurs, vous avez une vieille version du plugin.
La version actuelle a ce code:

function onBeforeStoreUser($user, $isnew, $new=null){
		if(!$isnew) return true;

		$app = JFactory::getApplication();

		if(version_compare(JVERSION,'4.0','>=') && $app->isClient('administrator'))
			return true;
		if(version_compare(JVERSION,'4.0','<') && $app->isAdmin())
			return true;

		if (@$_REQUEST['option']=='com_updateme' && @$_REQUEST['ctrl']=='subscription' && @$_REQUEST['task']=='api') return true;


		if (!in_array(@$_REQUEST['option'],$this->components)) return true;

		$this->_init();
		if(!$this->params->get('registration',1)){
			return true;
		}

		return $this->_checkCaptcha();
	}
Dans ce code, la ligne
if (!in_array(@$_REQUEST['option'],$this->components)) return true;
permet justement de ne faire la vérification du captcha uniquement sur les extensions supportées par le plugin. Donc votre soucis est déjà pris en compte :)

Please Log in or Create an account to join the conversation.

  • Posts: 246
  • Thank you received: 5
4 years 4 months ago #313590

Bonsoir,

et merci pour la réponse détaillée et la bonne nouvelle. Par contre on a mis à jour récemment notre site en installant par dessus l'existant un fichier récupéré dans notre section "subscription" intitulé com_hikashop_business_v4.2.2_2019-10-26_08-47-03.zip . On a fait cela le 26/10 dernier et je ne vois pas de plugin dans le zip.
Quelle est la bonne procédure de mise à jour alors ? Cela veut-il dire que tous nos plugins sont "anciens" (paiements, livraisons, etc...) ? Où les trouve-t-on ? Il y a-t-il un changelog pour ces plugins ?

Merci

Please Log in or Create an account to join the conversation.

  • Posts: 81511
  • Thank you received: 13066
  • MODERATOR
4 years 4 months ago #313603

Bonjour,

Les plugins préinstallés avec HikaShop sont mis à jour avec HikaShop. Donc non, vos plugins ne sont pas anciens.
Ils sont d'ailleurs dans le zip. Dans le dossier back/extensions/ du zip. Et le changelog d'HikaShop inclut les modifications faites sur ces plugins également.
Par contre, le plugin ReCaptcha est un plugin que nous fournissons à coté d'HikaShop :
www.hikashop.com/support/documentation/7...-with-recaptcha.html
Il faut donc le mettre à jour manuellement (si vous voulez le mettre à jour).

Please Log in or Create an account to join the conversation.

  • Posts: 246
  • Thank you received: 5
4 years 4 months ago #313617

Tout est clair. Merci.

Please Log in or Create an account to join the conversation.

Time to create page: 0.039 seconds
Powered by Kunena Forum