Office + recaptchaV2
Как интегрировать recaptchaV2 с фомрмой авторизации/регистрации office? В доках и на форуме ничего подобного не нашел…
- ВКонтакте
- Telegram
- Viber
- РЎРєРѕРїРСвЂВВВВВВВВровать ссылку
1 044
0
Комментарии: 4
25 октября 2018, 16:20
Можно прикрутить таким образом:
1. Делаем всё по инструкции — www.createit.ru/blog/modx/2017/recaptchav2-i-neskolko-form-na-odnoj-stranicze/
2. Создаем 2 плагина с одинаковым выводом кроме системного события
Первый — recaptchav2_OfficeAuth, и включаем ему событие «OnWebAuthentication»
У меня работает так
1. Делаем всё по инструкции — www.createit.ru/blog/modx/2017/recaptchav2-i-neskolko-form-na-odnoj-stranicze/
2. Создаем 2 плагина с одинаковым выводом кроме системного события
Первый — recaptchav2_OfficeAuth, и включаем ему событие «OnWebAuthentication»
<?php
if ($modx->context->key != 'mgr') {
switch ($modx->event->name) {
case 'OnWebAuthentication':
//$modx->log(1,print_r($_POST,1));
if(!isset($_POST['g-recaptcha-response'])){
$modx->event->output('Enter recapcha!');
}
// Register API keys at https://www.google.com/recaptcha/admin
$site_key = $modx->getOption('recaptchav2.site_key', null, '');
$secret = $modx->getOption('recaptchav2.secret_key', null, '');
// reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
$lang = $modx->getOption('cultureKey', null, 'en');
// make sure the modLexicon class is loaded by instantiating
$modx->getService('lexicon','modLexicon');
// load lexicon
$modx->lexicon->load('recaptchav2:default');
// get the message from default.inc.php from the correct lang
$tech_err_msg = $modx->lexicon('recaptchav2.technical_error_message');
$recaptcha_err_msg = $modx->lexicon('recaptchav2.recaptcha_error_message');
// Get the class
$recaptchav2Path = $modx->getOption('recaptchav2.core_path', null, $modx->getOption('core_path') . 'components/recaptchav2/');
$recaptchav2Path .= 'model/recaptchav2/';
if (!file_exists($recaptchav2Path . 'autoload.php')) {
$modx->log(modX::LOG_LEVEL_WARN, 'Cannot find required RecaptchaV2 autoload.php file.');
return false;
}
require_once($recaptchav2Path . 'autoload.php');
$recaptchav2 = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost());
if (!($recaptchav2 instanceof \ReCaptcha\ReCaptcha)) {
//$hook->addError('recaptchav2_error', $tech_err_msg);
$modx->log(modX::LOG_LEVEL_WARN, 'Failed to load recaptchav2 class.');
$modx->event->output($tech_err_msg);
}
// The response from reCAPTCHA
$resp = null;
// The error code from reCAPTCHA, if any
$error = null;
// Was there a reCAPTCHA response?
if ($_POST['g-recaptcha-response']) {
$resp = $recaptchav2->verify($_POST['g-recaptcha-response'], $_SERVER["REMOTE_ADDR"]);
}
// Hook pass/fail
if ($resp != null && $resp->isSuccess()) {
} else {
//$hook->addError('recaptchav2_error', $recaptcha_err_msg);
//DEBUG INFO: $modx->log(modX::LOG_LEVEL_ERROR, print_r($resp, true));
$modx->event->output($recaptcha_err_msg);
}
break;
}
}
Второй — recaptchav2_Officeregist, событие — OnBeforeUserFormSave<?php
if ($modx->context->key != 'mgr') {
switch ($modx->event->name) {
case 'OnBeforeUserFormSave':
//$modx->log(1,print_r($_POST,1));
if(!isset($_POST['g-recaptcha-response'])){
$modx->event->output('Enter recapcha!');
}
// Register API keys at https://www.google.com/recaptcha/admin
$site_key = $modx->getOption('recaptchav2.site_key', null, '');
$secret = $modx->getOption('recaptchav2.secret_key', null, '');
// reCAPTCHA supported 40+ languages listed here: https://developers.google.com/recaptcha/docs/language
$lang = $modx->getOption('cultureKey', null, 'en');
// make sure the modLexicon class is loaded by instantiating
$modx->getService('lexicon','modLexicon');
// load lexicon
$modx->lexicon->load('recaptchav2:default');
// get the message from default.inc.php from the correct lang
$tech_err_msg = $modx->lexicon('recaptchav2.technical_error_message');
$recaptcha_err_msg = $modx->lexicon('recaptchav2.recaptcha_error_message');
// Get the class
$recaptchav2Path = $modx->getOption('recaptchav2.core_path', null, $modx->getOption('core_path') . 'components/recaptchav2/');
$recaptchav2Path .= 'model/recaptchav2/';
if (!file_exists($recaptchav2Path . 'autoload.php')) {
$modx->log(modX::LOG_LEVEL_WARN, 'Cannot find required RecaptchaV2 autoload.php file.');
return false;
}
require_once($recaptchav2Path . 'autoload.php');
$recaptchav2 = new \ReCaptcha\ReCaptcha($secret, new \ReCaptcha\RequestMethod\CurlPost());
if (!($recaptchav2 instanceof \ReCaptcha\ReCaptcha)) {
//$hook->addError('recaptchav2_error', $tech_err_msg);
$modx->log(modX::LOG_LEVEL_WARN, 'Failed to load recaptchav2 class.');
$modx->event->output($tech_err_msg);
}
// The response from reCAPTCHA
$resp = null;
// The error code from reCAPTCHA, if any
$error = null;
// Was there a reCAPTCHA response?
if ($_POST['g-recaptcha-response']) {
$resp = $recaptchav2->verify($_POST['g-recaptcha-response'], $_SERVER["REMOTE_ADDR"]);
}
// Hook pass/fail
if ($resp != null && $resp->isSuccess()) {
} else {
//$hook->addError('recaptchav2_error', $recaptcha_err_msg);
//DEBUG INFO: $modx->log(modX::LOG_LEVEL_ERROR, print_r($resp, true));
$modx->event->output($recaptcha_err_msg);
}
break;
}
}
У меня работает так
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
Здесь упомянуты:
Компонент | Текущая версия | Закачки |
Office | 1.9.5-pl от 01.10.2021 | 7 056 |
6 часов назад
Если речь про админку, то мне вообще непонятно, что ты пытаешься сделать и зачем? В админке есть интерфейс работы с заказами и в этом интерфейсе можно...
Вывод перечня заказанных товаров в таблицу с заказами minishop2 (панель менеджера) 10
Вчера в 21:11
Здравствуйте
Есть желание использовать компонент polylang для автоматизации перевода с наименьшими усилиями, но есть пару вопросов, которые хотелось ...
Polylang 143
Вчера в 16:30
Добрый день.
Удалите плагин vpSystem от пакета.
[VirtualPage] - Виртуальные страницы. 183
Вчера в 08:40
Хочестя в тикеты при сохранении комментария добавить кнопку «проверить на ошибки» и при нажатии на нее проверить комментарий на ошибки в нейросети сох...
pbStudio: Создаём сайт с PageBlocks – настройка и главная страница 6
Вчера в 08:36
Нет, через апи идет запрос в ChatGPT, который формирует необходимые данные о блоке, а дальше PageBlocks их разбирает и создает все нужные элементы.
PageBlocks 2.6.0. Настройка меню MODX и гибкое управление страницей пользователя 12
Вчера в 00:03
Не работает парсинг с vk.com, vkvideo.ru
[videoGallery] 1.4.0 Поддержка VK Video и ещё пара фишек 9
17 апреля 2025, 23:01
Можете тоже подсказать как победить данную ошибку?
msGallerySearch - загрузка изображений в галерею minishop2 по ссылке и Google поиск картинок 44
17 апреля 2025, 17:49
Очевидно ты используешь источник файлов, поэтому в админке путь прописан от источника, хочешь полный путь, откажись от источника файлов.
Не открываются загруженные файлы пишет страница не найдена 2
17 апреля 2025, 15:08
Привет, Henk. Спасибо за ответ! В посте по ссылке меня больше всего заинтересовала фраза «мы интегрировали AI в медиа-менеджер, чтобы значительно упро...
MODX/AI Hackathon Part 2 (27 марта) 4
17 апреля 2025, 13:17
в preg_match проверка проходит, и туда 100% приходит url
Здравствуйте! Первый раз такое вижу, у слеша, не 1 символ в строке, а 9!! Как это делает MODX 2