private function _validCaptcha($captchaReponse) { $recaptcha = new \ZendService\ReCaptcha\ReCaptcha($this->_getServConfig()['google']['publicKey'], $this->_getServConfig()['google']['privateKey']); if (empty($captchaReponse)) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Veuillez valider votre captcha."), 'error'); return false; } $result = $recaptcha->verify($captchaReponse); if (!$result->isValid()) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Veuillez verifier votre captcha."), 'error'); return false; } else { return true; } }
/** * Construct the recaptcha helper * * @param ServiceManager $sm Service manager. * * @return \VuFind\Record\Loader */ public static function getRecaptcha(ServiceManager $sm) { $config = $sm->get('VuFind\\Config')->get('config'); $recaptcha = new \ZendService\ReCaptcha\ReCaptcha(isset($config->Captcha->publicKey) ? $config->Captcha->publicKey : '', isset($config->Captcha->privateKey) ? $config->Captcha->privateKey : ''); if (isset($config->Captcha->theme)) { $recaptcha->setOption('theme', $config->Captcha->theme); $recaptcha->setOption('custom_theme_widget', 'custom_recaptcha_widget'); $translator = $sm->get('VuFind\\Translator'); $recaptcha->setOption('custom_translations', ['audio_challenge' => $translator->translate('recaptcha_audio_challenge'), 'cant_hear_this' => $translator->translate('recaptcha_cant_hear_this'), 'help_btn' => $translator->translate('recaptcha_help_btn'), 'image_alt_text' => $translator->translate('recaptcha_image_alt_text'), 'incorrect_try_again' => $translator->translate('recaptcha_incorrect_try_again'), 'instructions_audio' => $translator->translate('recaptcha_instructions_audio'), 'instructions_visual' => $translator->translate('recaptcha_instructions_visual'), 'play_again' => $translator->translate('recaptcha_play_again'), 'privacy_and_terms' => $translator->translate('recaptcha_privacy_and_terms'), 'refresh_btn' => $translator->translate('recaptcha_refresh_btn'), 'visual_challenge' => $translator->translate('recaptcha_visual_challenge')]); } return $recaptcha; }
/** * Register new user */ public function registerAction() { // if the user is logged in, we don't need to register if ($this->zfcUserAuthentication()->hasIdentity()) { // redirect to the login redirect route return $this->redirect()->toRoute($this->options->getLoginRedirectRoute()); } // if registration is disabled if (!$this->options->getEnableRegistration()) { return array('enableRegistration' => false); } $request = $this->getRequest(); $service = $this->userService; $form = $this->registerForm; if ($this->options->getUseRedirectParameterIfPresent() && $request->getQuery()->get('redirect')) { $redirect = $request->getQuery()->get('redirect'); } else { $redirect = false; } $redirectUrl = $this->url()->fromRoute(static::ROUTE_REGISTER) . ($redirect ? '?redirect=' . rawurlencode($redirect) : ''); $prg = $this->prg($redirectUrl, true); if ($prg instanceof Response) { return $prg; } elseif ($prg === false) { return array('registerForm' => $form, 'enableRegistration' => $this->options->getEnableRegistration(), 'redirect' => $redirect); } $post = $prg; $user = $service->register($post); $redirect = isset($prg['redirect']) ? $prg['redirect'] : null; // THS surcouche recaptcha $recaptcha = new \ZendService\ReCaptcha\ReCaptcha($this->getServiceLocator()->get('config')['google']['publicKey'], $this->getServiceLocator()->get('config')['google']['privateKey']); if (empty($prg['g-recaptcha-response'])) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Veuillez valider votre captcha."), 'error'); return array('registerForm' => $form, 'enableRegistration' => $this->options->getEnableRegistration(), 'redirect' => $redirect); } $result = $recaptcha->verify($prg['g-recaptcha-response']); if (!$result->isValid()) { $this->flashMessenger()->addMessage($this->_getServTranslator()->translate("Veuillez verifier votre captcha."), 'error'); return array('registerForm' => $form, 'enableRegistration' => $this->options->getEnableRegistration(), 'redirect' => $redirect); } // THS END if (!$user) { return array('registerForm' => $form, 'enableRegistration' => $this->options->getEnableRegistration(), 'redirect' => $redirect); } if ($service->getOptions()->getLoginAfterRegistration()) { $identityFields = $service->getOptions()->getAuthIdentityFields(); if (in_array('email', $identityFields)) { $post['identity'] = $user->getEmail(); } elseif (in_array('username', $identityFields)) { $post['identity'] = $user->getUsername(); } $post['credential'] = $post['password']; $request->setPost(new Parameters($post)); return $this->forward()->dispatch(static::CONTROLLER_NAME, array('action' => 'authenticate')); } // TODO: Add the redirect parameter here... // ths return $this->redirect()->toRoute('register-sendmail', array('mail' => base64_encode($post['email']))); // return $this->redirect()->toUrl($this->url()->fromRoute(static::ROUTE_LOGIN) . ($redirect ? '?redirect='. rawurlencode($redirect) : '')); }