Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

#133 Add google recaptcha v2 support #1087

Open
wants to merge 5 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,4 @@
/vendor/
/metafile
.DS_Store
/translator
2 changes: 1 addition & 1 deletion application/config/migration.php
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
| be upgraded / downgraded to.
|
*/
$config['migration_version'] = 21;
$config['migration_version'] = 22;


/*
Expand Down
30 changes: 30 additions & 0 deletions application/controllers/Appointments.php
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,8 @@ public function index($appointment_hash = '')
$display_privacy_policy = $this->settings_model->get_setting('display_privacy_policy');
$privacy_policy_content = $this->settings_model->get_setting('privacy_policy_content');
$display_any_provider = $this->settings_model->get_setting('display_any_provider');
$require_captcha = $this->settings_model->get_setting('require_captcha');
$recaptcha_client_token = $this->settings_model->get_setting('recaptcha_client_token');
$timezones = $this->timezones->to_array();

// Remove the data that are not needed inside the $available_providers array.
Expand Down Expand Up @@ -174,6 +176,8 @@ public function index($appointment_hash = '')
'privacy_policy_content' => $privacy_policy_content,
'timezones' => $timezones,
'display_any_provider' => $display_any_provider,
'recaptcha_client_token' => $recaptcha_client_token,
'require_captcha' => $require_captcha,
];
}
catch (Exception $exception)
Expand Down Expand Up @@ -468,6 +472,32 @@ public function ajax_register_appointment()
return;
}

if ($require_captcha === '2')
{
$recaptcha_server_token = $this->settings_model->get_setting('recaptcha_server_token');
$recaptcha = $this->input->post('recaptcha');
if (!$recaptcha) {
$this->output
->set_content_type('application/json')
->set_output(json_encode([
'captcha_verification' => FALSE
]));
return;
}

$captchaUrl = 'https://www.google.com/recaptcha/api/siteverify?secret=' . urlencode($recaptcha_server_token) . '&response=' . urlencode($recaptcha);
$captchaResponse = json_decode(file_get_contents($captchaUrl),true);

if($captchaResponse["success"] === false) {
$this->output
->set_content_type('application/json')
->set_output(json_encode([
'captcha_verification' => FALSE
]));
return;
}
}

if ($this->customers_model->exists($customer))
{
$customer['id'] = $this->customers_model->find_record_id($customer);
Expand Down
22 changes: 22 additions & 0 deletions application/controllers/Backend_api.php
Original file line number Diff line number Diff line change
Expand Up @@ -1355,6 +1355,28 @@ public function ajax_save_settings()

$settings = json_decode($this->input->post('settings', FALSE), TRUE);

foreach ($settings as $setting)
{
if (
$setting['name'] == "company_email" ||
$setting['name'] == "company_link" ||
$setting['name'] == "company_name" ||
$setting['name'] == "cookie_notice_content" ||
$setting['name'] == "privacy_policy_content"
){
$setting['value'] = htmlspecialchars($setting['value']);
}

if (
$setting['name'] == "customer_notifications" ||
$setting['name'] == "require_phone_number" ||
$setting['name'] == "require_captcha" ||
$setting['name'] == "display_any_provider"
){
$setting['value'] = preg_replace('/\D/', '', $setting['value']);
}
}

$this->settings_model->save_settings($settings);
}
else
Expand Down
7 changes: 6 additions & 1 deletion application/language/arabic/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'لا يمكن اضافة موعدك على تقويم جوجل';
$lang['ea_update_success'] = 'تم تحديث برنامج الحجوزات بنجاح';
$lang['require_captcha'] = 'مطلوب CAPTCHA';
$lang['require_captcha_hint'] = 'عند التمكين ، سيتوجب على الزبون ادخال رمز عشوائي عند الحجز او التعديل على الموعد ';
$lang['required_captcha_hint'] = 'عند التمكين ، سيتعين على العملاء مواجهة تحدي CAPTCHA قبل حجز / تحديث موعد لإثبات أنهم ليسوا روبوتًا.';
$lang['none'] = 'بلا';
$lang['recaptcha_server_token'] = 'reCAPTCHA Server Token';
$lang['recaptcha_client_token'] = 'reCAPTCHA Client Token';
$lang['recaptcha_hint'] = 'يرجى الانتقال إلى موقع مسؤول google recaptcha لإعداد نطاق reCAPTCHA v2 والحصول على الرموز المميزة للخادم والعميل.';
$lang['recaptcha_warning'] = 'أنت مسؤول عن تحديث سياسة الخصوصية بشكل مناسب لتتوافق مع القوانين المحلية عند استخدام reCAPTCHA!';
$lang['captcha_is_wrong'] = 'الرجاء المحاولة مرة أخرى CAPTCHA لم يتم تأكيد';
$lang['any_provider'] = 'أيْ مزوّد خدمة';
$lang['requested_hour_is_unavailable'] = 'الموعد الذي طلبته غير متاح للأسف . يرجى اختيار ساعة مختلفة لحجز الموعد ';
Expand Down
7 changes: 6 additions & 1 deletion application/language/bulgarian/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Вашият час не бе добавен във Вашият Google Calendar.';
$lang['ea_update_success'] = 'Системата Обновена успешно';
$lang['require_captcha'] = 'Изискване на CAPTCHA';
$lang['require_captcha_hint'] = 'Когато е активно, потребителя , ще трябва да въведе произволно генерирани символи за да запише или промени час.';
$lang['require_captcha_hint'] = 'Когато се активира, клиентите ще трябва да се изправят пред CAPTCHA предизвикателство преди да резервират / актуализират среща, за да докажат, че не са робот.';
$lang['none'] = 'Няма';
$lang['recaptcha_server_token'] = 'маркер на сървъра reCAPTCHA';
$lang['recaptcha_client_token'] = 'Клиентски маркер на reCAPTCHA';
$lang['recaptcha_hint'] = 'Моля, отидете на уебсайта на администратора на goca recaptcha, за да настроите домейн reCAPTCHA v2 и да получите вашите сървърни и клиентски токени.';
$lang['recaptcha_warning'] = 'Вие носите отговорност за правилното актуализиране на вашата политика за поверителност, за да се съобразите с местните закони, когато използвате reCAPTCHA!';
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
$lang['any_provider'] = 'Произволен Изпълнител';
$lang['requested_hour_is_unavailable'] = 'Заявеният от Вас час не е наличен. Моля изберете друг час.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/catalan/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'La vostra cita no s\'ha pogut afegir al vostre compte de Google Calendar.';
$lang['ea_update_success'] = 'Easy!Appointments s\'ha actualitzat correctament.';
$lang['require_captcha'] = 'Requereix un CAPTCHA';
$lang['require_captcha_hint'] = 'Quan s\'habilita, els clients hauran de teclejar una cadena CAPTCHA generada aleatòriament abans de reservar o actualitzar una cita.';
$lang['require_captcha_hint'] = 'Quan estigui activat, els clients hauran de fer front a un repte CAPTCHA abans de reservar / actualitzar una cita per demostrar que no són un robot.';
$lang['none'] = 'Cap';
$lang['recaptcha_server_token'] = 'Token del servidor reCAPTCHA';
$lang['recaptcha_client_token'] = 'testimoni del client reCAPTCHA';
$lang['recaptcha_hint'] = 'Aneu al lloc web d\'administrador de Google recaptcha per configurar un domini reCAPTCHA v2 i obtenir els vostres tokens de servidor i client.';
$lang['recaptcha_warning'] = 'Sou responsable d\'actualitzar adequadament la vostra política de privadesa per complir les lleis locals quan utilitzeu reCAPTCHA!';
$lang['captcha_is_wrong'] = 'La verificació del CAPTCHA ha fallat, torneu-ho a intentar.';
$lang['any_provider'] = 'Qualsevol proveïdor';
$lang['requested_hour_is_unavailable'] = 'La cita que demaneu no està disponible. Seleccioneu una hora diferent per la vostra cita.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/chinese/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = '您的预约不能添加到谷歌日历.';
$lang['ea_update_success'] = '预约系统已经成功更新.';
$lang['require_captcha'] = 'Require CAPTCHA';
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
$lang['require_captcha_hint'] = '启用后,客户在预订/更新约会之前必须面临验证码挑战,以证明他们不是机器人。';
$lang['none'] = 'None';
$lang['recaptcha_server_token'] = 'reCAPTCHA 服务器令牌';
$lang['recaptcha_client_token'] = 'reCAPTCHA 客户端令牌';
$lang['recaptcha_hint'] = '请到谷歌 recaptcha 管理网站设置 reCAPTCHA v2 域并获取您的服务器和客户端令牌。';
$lang['recaptcha_warning'] = '在使用 reCAPTCHA 时,您有责任适当更新您的隐私政策以遵守当地法律!';
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
$lang['any_provider'] = 'Any Provider';
$lang['requested_hour_is_unavailable'] = 'The requested appointment is unfortunately not available. Please select a different hour for your appointment.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/czech/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Vaše schůzka nemohla být přidána do vašeho Kalendáře Google.';
$lang['ea_update_success'] = 'Aplikace Easy!Appointments byla úspěšně aktualizována.';
$lang['require_captcha'] = 'Vyžadovat CAPTCHA';
$lang['require_captcha_hint'] = 'Pokud bude povolena, zákazníci budou muset před vytvořením/editací schůzky zadat náhodně vygenerovaný řetězec CAPTCHA.';
$lang['require_captcha_hint'] = 'Je-li tato možnost povolena, zákazníci budou muset před rezervací / aktualizací schůzky čelit výzvě CAPTCHA, aby prokázali, že nejsou robotem.';
$lang['none'] = 'Žádné';
$lang['recaptcha_server_token'] = 'token serveru reCAPTCHA';
$lang['recaptcha_client_token'] = 'klientský token reCAPTCHA';
$lang['recaptcha_hint'] = 'Přejděte prosím na web administrátora google recaptcha, kde si nastavíte doménu reCAPTCHA v2 a získáte tokeny svého serveru a klienta.';
$lang['recaptcha_warning'] = 'Jste odpovědní za náležitou aktualizaci svých zásad ochrany osobních údajů tak, aby při používání reCAPTCHA odpovídaly místním zákonům!';
$lang['captcha_is_wrong'] = 'Ověření CAPTCHA selhalo, prosím opakujte akci.';
$lang['any_provider'] = 'Jakýkoli poskytovatel';
$lang['requested_hour_is_unavailable'] = 'Požadovaná schůzka bohužel aktuálně není dostupná. Vyberte prosím pro vaši schůzku jiný čas.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/danish/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Din tid kunne ikke tilføjes din Google kalender konto';
$lang['ea_update_success'] = 'Easy!Appointments er blevet opdateret.';
$lang['require_captcha'] = 'Require CAPTCHA';
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
$lang['require_captcha_hint'] = 'Når dette er aktiveret, skal kunderne stå over for en CAPTCHA-udfordring, før de bestiller / opdaterer en aftale for at bevise, at de ikke er en robot.';
$lang['none'] = 'Ingen';
$lang['recaptcha_server_token'] = 'reCAPTCHA-server-token';
$lang['recaptcha_client_token'] = 'reCAPTCHA klienttoken';
$lang['recaptcha_hint'] = 'Gå til google recaptcha admin-webstedet for at konfigurere et reCAPTCHA v2-domæne og få din server og klient-tokens.';
$lang['recaptcha_warning'] = 'Du er ansvarlig for korrekt opdatering af din fortrolighedspolitik for at overholde lokale love, når du bruger reCAPTCHA!';
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
$lang['any_provider'] = 'Alle leverandører';
$lang['requested_hour_is_unavailable'] = 'The requested appointment is unfornately not available. Please select a different hour for your appointment.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/dutch/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Uw afspraak kon niet toegevoegd worden aan het Google Agenda-account.';
$lang['ea_update_success'] = 'Easy!Appointments is succesvol bijgewerkt.';
$lang['require_captcha'] = 'CAPTCHA vereist.';
$lang['require_captcha_hint'] = 'Indien ingeschakeld moeten de klanten een willekeurige tekenreeks invullen om een afspraak te bevestigen.';
$lang['require_captcha_hint'] = 'Wanneer ingeschakeld, moeten klanten een CAPTCHA-uitdaging aangaan voordat ze een afspraak boeken/bijwerken om te bewijzen dat ze geen robot zijn.';
$lang['none'] = 'Geen';
$lang['recaptcha_server_token'] = 'reCAPTCHA-servertoken';
$lang['recaptcha_client_token'] = 'reCAPTCHA-clienttoken';
$lang['recaptcha_hint'] = 'Ga naar de google recaptcha-beheerderswebsite om een reCAPTCHA v2-domein in te stellen en uw server- en clienttokens op te halen.';
$lang['recaptcha_warning'] = 'U bent verantwoordelijk voor het op de juiste manier bijwerken van uw privacybeleid om te voldoen aan de lokale wetgeving bij het gebruik van reCAPTCHA!';
$lang['captcha_is_wrong'] = 'CAPTCHA verificatie is mislukt, probeer het a.u.b.nogmaals.';
$lang['any_provider'] = 'Maakt mij niet uit.';
$lang['requested_hour_is_unavailable'] = 'De gekozen tijd voor uw afspraak is helaas niet beschikbaar. Kies a.u.b.een ander uur voor uw afspraak.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/english/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Your appointment could not be added to your Google Calendar account.';
$lang['ea_update_success'] = 'Easy!Appointments has been successfully updated.';
$lang['require_captcha'] = 'Require CAPTCHA';
$lang['require_captcha_hint'] = 'When enabled, the customers will have to type a random generated CAPTCHA string before booking/updating an appointment.';
$lang['require_captcha_hint'] = 'When enabled, customers will have to face a CAPTCHA challenge before booking/updating an appointment to prove that they are not a robot.';
$lang['none'] = 'None';
$lang['recaptcha_server_token'] = 'reCAPTCHA Server Token';
$lang['recaptcha_client_token'] = 'reCAPTCHA Client Token';
$lang['recaptcha_hint'] = 'Please go to the google recaptcha admin website to setup a reCAPTCHA v2 domain and get your server and client tokens.';
$lang['recaptcha_warning'] = 'You are responsible for appropriately updating your privacy policy to comply with local laws when using reCAPTCHA!';
$lang['captcha_is_wrong'] = 'CAPTCHA verification failed, please try again.';
$lang['any_provider'] = 'Any Provider';
$lang['requested_hour_is_unavailable'] = 'The requested appointment is unfortunately not available. Please select a different hour for your appointment.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/finnish/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Varaustasi ei pystytty lisäämään Google-kalenteri tiliisi.';
$lang['ea_update_success'] = 'Easy!Appointments päivitettiin onnistuneesti.';
$lang['require_captcha'] = 'Vaadi CAPTCHA';
$lang['require_captcha_hint'] = 'Jos aktivoitu, asiakkaan pitää kirjoittaa satunnainen CAPTCHA varmennus ennen varauksen lisäämistä/päivittämistä.';
$lang['reikalauja_captcha_hint'] = 'Kun tämä on käytössä, asiakkaiden on kohdattava CAPTCHA-haaste ennen varauksen tekemistä / päivittämistä osoittaakseen, etteivät he ole robotteja.';
$lang['none'] = 'Ei mitään';
$lang['recaptcha_server_token'] = 'reCAPTCHA-palvelintunnus';
$lang['recaptcha_client_token'] = 'reCAPTCHA-asiakastunnus';
$lang['recaptcha_hint'] = 'Mene google recaptcha -järjestelmänvalvojan verkkosivustolle määrittämään reCAPTCHA v2 -verkkotunnus ja hanki palvelimesi ja asiakastunnuksesi.';
$lang['recaptcha_warning'] = 'Olet vastuussa tietosuojakäytäntösi päivittämisestä paikallisten lakien mukaiseksi käyttäessäsi reCAPTCHA!';
$lang['captcha_is_wrong'] = 'CAPTCHA varmennus epäonnistui, ole hyvä ja yritä uudelleen.';
$lang['any_provider'] = 'Kuka tahansa';
$lang['requested_hour_is_unavailable'] = 'Pyydetty aika ei ole vapaana. Ole hyvä ja valitse uusi aika.';
Expand Down
7 changes: 6 additions & 1 deletion application/language/french/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,12 @@
$lang['could_not_add_to_google_calendar'] = 'Votre rendez-vous ne peut pas être ajouté à votre calendrier Google.';
$lang['ea_update_success'] = 'Easy!Appointments à été mis à jour avec succès.';
$lang['require_captcha'] = 'CAPTCHA obligatoire';
$lang['require_captcha_hint'] = 'Lorsque l\'option est activée, les clients doivent taper un code de vérification CAPTCHA avant de pouvoir réserver ou mettre à jour un rendez-vous.';
$lang['require_captcha_hint'] = 'Lorsque activé, les clients devront faire face à un défi CAPTCHA avant de réserver/mettre à jour un rendez-vous pour prouver qu\'ils ne sont pas un robot.';
$lang['aucun'] = 'Aucun';
$lang['recaptcha_server_token'] = 'jeton de serveur reCAPTCHA';
$lang['recaptcha_client_token'] = 'jeton client reCAPTCHA';
$lang['recaptcha_hint'] = 'Veuillez vous rendre sur le site Web d\'administration de google recaptcha pour configurer un domaine reCAPTCHA v2 et obtenir vos jetons serveur et client.';
$lang['recaptcha_warning'] = 'Vous êtes responsable de la mise à jour appropriée de votre politique de confidentialité pour vous conformer aux lois locales lorsque vous utilisez reCAPTCHA !';
$lang['captcha_is_wrong'] = 'Le code de vérification CAPTCHA est erroné, merci de réessayer.';
$lang['any_provider'] = 'Toute personne disponible';
$lang['requested_hour_is_unavailable'] = 'Cette heure de rendez n\'est malheureusement pas disponible. Merci de sélectionner une autre heure pour votre rendez-vous.';
Expand Down
5 changes: 5 additions & 0 deletions application/language/german/translations_lang.php
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,11 @@
$lang['ea_update_success'] = 'Easy!Appointments wurde erfolgreich aktualisiert.';
$lang['require_captcha'] = 'CAPTCHA erfordern';
$lang['require_captcha_hint'] = 'Wenn aktiv, werden die Kunden aufgefordert, eine zufällig generierte Zeichenfolge (CAPTCHA) einzutippen bevor Sie einen Termin buchen oder speichern können.';
$lang['none'] = 'Keine';
$lang['recaptcha_server_token'] = 'reCAPTCHA-Server-Token';
$lang['recaptcha_client_token'] = 'reCAPTCHA-Client-Token';
$lang['recaptcha_hint'] = 'Bitte gehen Sie zur google recaptcha Admin-Website, um eine reCAPTCHA v2-Domain einzurichten und Ihre Server- und Client-Token zu erhalten.';
$lang['recaptcha_warning'] = 'Sie sind dafür verantwortlich, Ihre Datenschutzrichtlinie entsprechend zu aktualisieren, um den lokalen Gesetzen bei der Verwendung von reCAPTCHA zu entsprechen!';
$lang['captcha_is_wrong'] = 'CAPTCHA-Überprüfung fehlgeschlagen, bitte versuchen Sie es erneut.';
$lang['any_provider'] = 'Jeder Anbieter';
$lang['requested_hour_is_unavailable'] = 'Der gewünschte Termin ist leider nicht verfügbar. Bitte wählen Sie eine andere Zeit für den Termin.';
Expand Down