public function register($data) { $errors = new MultiException(); if (empty($data->email)) { $errors->add('Не введен e-mail', self::ERROR_INVALID_EMAIL); } if (empty($data->password)) { $errors->add('Не введен пароль', self::ERROR_INVALID_PASSWORD); } if (empty($data->password2)) { $errors->add('Не введено подтверждение пароля', self::ERROR_INVALID_PASSWORD); } if ($data->password2 != $data->password) { $errors->add('Введенные пароли не совпадают', self::ERROR_INVALID_PASSWORD); } if (!$errors->isEmpty()) { throw $errors; } $user = User::findByEmail($data->email); if (!empty($user)) { $errors->add('Такой e-mail уже зарегистрирован', self::ERROR_INVALID_EMAIL); } if (!$errors->isEmpty()) { throw $errors; } $app = Application::getInstance(); if ($app->config->extensions->captcha->register) { if (empty($data->captcha)) { $errors->add('Не введена строка с картинки', self::ERROR_INVALID_CAPTCHA); } else { if (!$app->extensions->captcha->checkKeyString($data->captcha)) { $errors->add('Неверные символы с картинки', self::ERROR_INVALID_CAPTCHA); } } } if (!$errors->isEmpty()) { throw $errors; } $user = new User(); $user->email = $data->email; $user->password = \T4\Crypt\Helpers::hashPassword($data->password); $user->save(); return $user; }
/** * @param \T4\Core\IArrayable|array $data * @return static $this * @throws \T4\Core\MultiException */ public function fill($data) { if ($data instanceof IArrayable) { $data = $data->toArray(); } else { $data = (array) $data; } $errors = new MultiException(); foreach ($data as $key => $value) { try { $this->{$key} = $value; } catch (\Exception $e) { if ($e instanceof MultiException) { $errors->merge($e); } else { $errors->add($e); } } } if (!$errors->isEmpty()) { throw $errors; } return $this; }