Added recaptcha
This commit is contained in:
@@ -15,15 +15,13 @@ class RegistrationModel
|
||||
*/
|
||||
public static function registerNewUser($isAdmin = false)
|
||||
{
|
||||
// clean the input
|
||||
$user_name = strip_tags(Request::post('user_name'));
|
||||
$user_email = strip_tags(Request::post('user_email'));
|
||||
// Use 'user_password' if provided (admin registration), otherwise 'user_password_new'
|
||||
$user_password_new = $isAdmin ? Request::post('user_password_new') : Request::post('user_password_new');
|
||||
$user_password_repeat = $user_password_new; // no repeat field
|
||||
$user_password_new = Request::post('user_password_new');
|
||||
$user_password_repeat = $user_password_new;
|
||||
|
||||
// validate using existing validators and messages
|
||||
$valid = true;
|
||||
if (!self::validateRecaptcha()) { $valid = false; }
|
||||
if (!self::validateUserName($user_name)) { $valid = false; }
|
||||
if (!self::validateUserEmail($user_email, $user_email)) { $valid = false; }
|
||||
if (!self::validateUserPassword($user_password_new, $user_password_repeat)) { $valid = false; }
|
||||
@@ -77,12 +75,35 @@ class RegistrationModel
|
||||
return $return;
|
||||
}
|
||||
|
||||
/**
|
||||
* Validates the username
|
||||
*
|
||||
* @param $user_name
|
||||
* @return bool
|
||||
*/
|
||||
public static function validateRecaptcha()
|
||||
{
|
||||
$recaptcha_response = Request::post('g-recaptcha-response');
|
||||
|
||||
if (empty($recaptcha_response)) {
|
||||
Session::add('feedback_negative', 'reCAPTCHA verification failed. Please try again.');
|
||||
return false;
|
||||
}
|
||||
|
||||
$secret_key = Config::get('RECAPTCHA_SECRET_KEY');
|
||||
$verify_url = 'https://www.google.com/recaptcha/api/siteverify';
|
||||
|
||||
$response = file_get_contents($verify_url . '?secret=' . $secret_key . '&response=' . $recaptcha_response);
|
||||
$response_data = json_decode($response);
|
||||
|
||||
if (!$response_data->success) {
|
||||
Session::add('feedback_negative', 'reCAPTCHA verification failed. Please try again.');
|
||||
return false;
|
||||
}
|
||||
|
||||
// v3 returns a score from 0.0 to 1.0 (1.0 = likely human, 0.0 = likely bot)
|
||||
if (isset($response_data->score) && $response_data->score < 0.5) {
|
||||
Session::add('feedback_negative', 'Registration blocked due to suspicious activity.');
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public static function validateUserName($user_name)
|
||||
{
|
||||
if (empty($user_name)) {
|
||||
@@ -90,7 +111,6 @@ class RegistrationModel
|
||||
return false;
|
||||
}
|
||||
|
||||
// if username is too short (2), too long (64) or does not fit the pattern (aZ09)
|
||||
if (!preg_match('/^[a-zA-Z0-9]{2,64}$/', $user_name)) {
|
||||
Session::add('feedback_negative', Text::get('FEEDBACK_USERNAME_DOES_NOT_FIT_PATTERN'));
|
||||
return false;
|
||||
|
||||
Reference in New Issue
Block a user