diff --git a/client/src/app/admin/admin-login-page.js b/client/src/app/admin/admin-login-page.js index 835b4e18..50321ee0 100644 --- a/client/src/app/admin/admin-login-page.js +++ b/client/src/app/admin/admin-login-page.js @@ -16,6 +16,9 @@ import Message from 'core-components/message'; import Widget from 'core-components/widget'; import WidgetTransition from 'core-components/widget-transition'; +import Captcha from 'app/main/captcha'; + +const MAX_FREE_LOGIN_ATTEMPTS = 3; class AdminLoginPage extends React.Component { state = { @@ -72,6 +75,7 @@ class AdminLoginPage extends React.Component { className="admin-login-page__login-form-container__login-form__fields__remember" field="checkbox" /> + {this.props.session.loginAttempts > MAX_FREE_LOGIN_ATTEMPTS ? this.renderLoginCaptcha() : null}
{i18n('LOG_IN')}
@@ -87,6 +91,14 @@ class AdminLoginPage extends React.Component { ); } + renderLoginCaptcha() { + return( +
+ +
+ ) + } + renderPasswordRecovery() { return (
diff --git a/client/src/app/main/main-home/main-home-page-login-widget.js b/client/src/app/main/main-home/main-home-page-login-widget.js index 5354ff74..7b8be00e 100644 --- a/client/src/app/main/main-home/main-home-page-login-widget.js +++ b/client/src/app/main/main-home/main-home-page-login-widget.js @@ -79,13 +79,10 @@ class MainHomePageLoginWidget extends React.Component { ); } - renderLoginCaptcha(){ + renderLoginCaptcha() { return(
-
) } diff --git a/server/controllers/user/login.php b/server/controllers/user/login.php index 4d49716c..78ce0e91 100755 --- a/server/controllers/user/login.php +++ b/server/controllers/user/login.php @@ -1,5 +1,7 @@ 'any', 'requestData' => [] ]; + + $validations['requestData']['captcha'] = [ + + 'validation' => DataValidator::oneOf(DataValidator::captcha(),DataValidator::nullType()), + 'error' => ERRORS::INVALID_CAPTCHA + ]; + + return $validations; + } public function handler() {