Beispiel #1
0
 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;
 }
Beispiel #2
0
 /**
  * @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;
 }