This commit is contained in:
Guillermo Giuliana 2021-11-24 00:38:38 -03:00
parent 14b195b7ca
commit dfe4e06942
3 changed files with 25 additions and 5 deletions

View File

@ -16,6 +16,9 @@ import Message from 'core-components/message';
import Widget from 'core-components/widget'; import Widget from 'core-components/widget';
import WidgetTransition from 'core-components/widget-transition'; import WidgetTransition from 'core-components/widget-transition';
import Captcha from 'app/main/captcha';
const MAX_FREE_LOGIN_ATTEMPTS = 3;
class AdminLoginPage extends React.Component { class AdminLoginPage extends React.Component {
state = { state = {
@ -72,6 +75,7 @@ class AdminLoginPage extends React.Component {
className="admin-login-page__login-form-container__login-form__fields__remember" className="admin-login-page__login-form-container__login-form__fields__remember"
field="checkbox" /> field="checkbox" />
</div> </div>
{this.props.session.loginAttempts > MAX_FREE_LOGIN_ATTEMPTS ? this.renderLoginCaptcha() : null}
<div className="admin-login-page__login-form-container__login-form__submit-button"> <div className="admin-login-page__login-form-container__login-form__submit-button">
<SubmitButton>{i18n('LOG_IN')}</SubmitButton> <SubmitButton>{i18n('LOG_IN')}</SubmitButton>
</div> </div>
@ -87,6 +91,14 @@ class AdminLoginPage extends React.Component {
); );
} }
renderLoginCaptcha() {
return(
<div>
<Captcha ref="captcha" />
</div>
)
}
renderPasswordRecovery() { renderPasswordRecovery() {
return ( return (
<div className="admin-login-page__recovery-form-container"> <div className="admin-login-page__recovery-form-container">

View File

@ -79,13 +79,10 @@ class MainHomePageLoginWidget extends React.Component {
); );
} }
renderLoginCaptcha(){ renderLoginCaptcha() {
return( return(
<div> <div>
<Captcha ref="captcha" /> <Captcha ref="captcha" />
<Button className="login-widget__forgot-password" type="link" >
{i18n('FORGOT_PASSWORD')}
</Button>
</div> </div>
) )
} }

View File

@ -1,5 +1,7 @@
<?php <?php
use RedBeanPHP\Facade as RedBean; use RedBeanPHP\Facade as RedBean;
use Respect\Validation\Validator as DataValidator;
DataValidator::with('CustomValidations', true);
/** /**
* @api {post} /user/login Login * @api {post} /user/login Login
@ -41,10 +43,19 @@ class LoginController extends Controller {
private $rememberExpiration; private $rememberExpiration;
public function validations() { public function validations() {
return [ $validations = [
'permission' => 'any', 'permission' => 'any',
'requestData' => [] 'requestData' => []
]; ];
$validations['requestData']['captcha'] = [
'validation' => DataValidator::oneOf(DataValidator::captcha(),DataValidator::nullType()),
'error' => ERRORS::INVALID_CAPTCHA
];
return $validations;
} }
public function handler() { public function handler() {