| <?php |
|
|
| namespace Kanboard\Validator; |
|
|
| use SimpleValidator\Validator; |
| use SimpleValidator\Validators; |
| use Gregwar\Captcha\CaptchaBuilder; |
|
|
| |
| |
| |
| |
| |
| |
| class AuthValidator extends BaseValidator |
| { |
| |
| |
| |
| |
| |
| |
| |
| public function validateForm(array $values) |
| { |
| return $this->executeValidators(array('validateFields', 'validateLocking', 'validateCaptcha', 'validateCredentials'), $values); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| protected function validateFields(array $values) |
| { |
| $v = new Validator($values, array( |
| new Validators\Required('username', t('The username is required')), |
| new Validators\MaxLength('username', t('The maximum length is %d characters', 191), 191), |
| new Validators\Required('password', t('The password is required')), |
| )); |
|
|
| return array( |
| $v->execute(), |
| $v->getErrors(), |
| ); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| protected function validateLocking(array $values) |
| { |
| $result = true; |
| $errors = array(); |
|
|
| if ($this->userLockingModel->isLocked($values['username'])) { |
| $result = false; |
| $errors['login'] = t('Your account is locked for %d minutes', BRUTEFORCE_LOCKDOWN_DURATION); |
| $this->logger->error('Account locked: '.$values['username']); |
| } |
|
|
| return array($result, $errors); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| protected function validateCredentials(array $values) |
| { |
| $result = true; |
| $errors = array(); |
|
|
| if (! $this->authenticationManager->passwordAuthentication($values['username'], $values['password'])) { |
| $result = false; |
| $errors['login'] = t('Bad username or password'); |
| } |
|
|
| return array($result, $errors); |
| } |
|
|
| |
| |
| |
| |
| |
| |
| |
| protected function validateCaptcha(array $values) |
| { |
| $result = true; |
| $errors = array(); |
|
|
| if ($this->userLockingModel->hasCaptcha($values['username'])) { |
| if (! session_exists('captcha')) { |
| $result = false; |
| } else { |
| $builder = new CaptchaBuilder; |
| $builder->setPhrase(session_get('captcha')); |
| $result = $builder->testPhrase(isset($values['captcha']) ? $values['captcha'] : ''); |
|
|
| if (! $result) { |
| $errors['login'] = t('Invalid captcha'); |
| } |
| } |
| } |
|
|
| return array($result, $errors); |
| } |
| } |
|
|