public function handleRequest(ChainContainer $chain) { $action = $chain->getRequest()['action']; if (!isset($this->actionsMap[$action])) { RespondError::make($chain->getFrom()); return; } $user = $chain->getFrom(); $request = $chain->getRequest(); try { $form = (new Form())->import($request)->addRule('login', Rules::email(), 'Некорректный формат email')->addRule('password', Rules::password(), 'Пароль должен быть от 8 до 20 символов'); } catch (WrongRuleNameException $e) { RespondError::make($user, ['property' => 'Некорректно указано свойство']); return; } if (!$form->validate()) { RespondError::make($user, $form->getErrors()); return; } $this->{$this->actionsMap[$action]}($chain); }
require_once "pages/activation/error.php"; exit; } if (strtotime($activation->getTimestamp()) + $config->activationTTL < time()) { $activation->setIsUsed(true); $activation->save(); require_once "pages/activation/error.php"; exit; } if (!$password) { require_once "pages/activation/prepare.php"; exit; } $form = new Form(); $form->import($_REQUEST); $form->addRule('password', Rules::password(), 'Пароль должен быть от 8 до 20 символов')->addRule('password-repeat', Rules::password(), 'Пароль должен быть от 8 до 20 символов'); $validation = $form->validate(); if (!$validation) { require_once "pages/activation/prepare.php"; exit; } if ($password != $passwordRepeat) { $validation = false; $form->markWrong('password', 'Введенные пароли не совпадают'); require_once "pages/activation/prepare.php"; exit; } $user = UserDAO::create()->getByEmail($email); $user->setPassword(password_hash($password, PASSWORD_BCRYPT)); $user->save(); $activation->setIsUsed(true);