J'essaie de supprimer le login si mon $completed
Var est faux. Je peux le faire fonctionner avec die()
mais je ne sais pas comment le faire correctement, de sorte que l'utilisateur soit renvoyé à la page de connexion avec un message d'erreur.
J'ai essayé avec return NULL;
, return false;
Et juste return;
Je ne peux pas le faire fonctionner ou trouver la solution n'importe où. J'espère vraiment que vous pourrez m'aider.
Ceci est mon code:
defined('_JEXEC') or die;
class plgAuthenticationTestlogin extends JPlugin{
function onUserAuthenticate( $credentials, $options, &$response ){
$captcha_plugin = JFactory::getConfig()->get('captcha');
$captcha = JCaptcha::getInstance($captcha_plugin);
$completed = $captcha->CheckAnswer('captcha');
if(!$completed){
$response->status = JAuthentication::STATUS_FAILURE;
$response->error_message = 'captcha not correct';
die("not valid reCaptcha");
}
}
}
Il est placé à l'intérieur d'un plugin créé. placé dans le dossier: plugins> authentication> mypluginFolder> myplugin.php Ce plugin fonctionne correctement, comme décrit ci-dessus - La connexion est annulée si j'utilise die("not valid reCaptcha");
On dirait que ça marche comme ça. Mais est-ce la bonne approche?
if(!$completed){
$app = JFactory::getApplication();
$app->enqueueMessage('ReCaptcha not validated', 'Fail');
$app->redirect(JRoute::_('index.php'));
die();
}
Je sens que c'est faux et que je devrais utiliser JAuthentication::STATUS_FAILURE;
Ce n'est pas une bonne façon de faire car vous ne devriez pas utiliser 'die'
Pour ce faire, utilisez cette méthode dans le plug-in Authentication.
function onUserAuthenticate($credentials, $options, &$response)
{
// check your condition and stop login here
$response->status = JAuthentication::STATUS_FAILURE;
$response->type = 'Test';
$response->error_message = JText::sprintf('JGLOBAL_AUTH_FAILED', JText::_('NOT_LOGGED_IN'));
return false;
}
Vous ne pouvez pas définir la redirection ici, pour définir la redirection, assurez-vous de la définir dans le paramètre (variable in JInput)
Si la méthode n'est pas déclenchée, veillez à définir l'ordre dans le bon ordre.