mirror of
https://github.com/opensupports/opensupports.git
synced 2025-07-31 01:35:15 +02:00
pt2
This commit is contained in:
parent
14b195b7ca
commit
dfe4e06942
@ -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">
|
||||||
|
@ -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>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
@ -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() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user