/** * doExecute * * @return mixed * @throws \Exception */ protected function doExecute() { $username = $this->input->getUsername('username'); $token = $this->input->getUsername('token'); $password = $this->input->getString('password'); $password2 = $this->input->getString('password2'); try { if (!trim($password)) { throw new ValidFailException(Translator::translate('windwalker.user.password.not.entered')); } if ($password != $password2) { throw new ValidFailException(Translator::translate('windwalker.user.password.not.match')); } $user = User::get(array('username' => $username)); if ($user->isNull()) { throw new ValidFailException(Translator::translate('windwalker.user.not.found')); } $passwordObject = new Password(); if (!$passwordObject->verify($token, $user->reset_token)) { throw new ValidFailException(Translator::translate('windwalker.user.invalid.token')); } $user->password = $passwordObject->create($password); $user->reset_token = ''; $user->last_reset = ''; User::save($user); } catch (ValidFailException $e) { $this->setRedirect($this->router->http('reset', array('task' => 'reset', 'username' => $username, 'token' => $token)), $e->getMessage(), Bootstrap::MSG_DANGER); return false; } $this->setRedirect($this->router->http('reset', array('task' => 'complete'))); return true; }
/** * define * * @param Form $form * * @return void */ public function define(Form $form) { parent::define($form); $form->wrap('created', null, function (Form $form) { $form->add('group', new RadioField())->label(Translator::translate('natika.user.field.group'))->set('class', 'btn-group')->addOption(new Option('Admin', 2))->addOption(new Option('Member', 1)); }); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { /* * Search Control * ------------------------------------------------- * Add search fields as options, by default, model will search all columns. * If you hop that user can choose a field to search, change "display" to true. */ $form->wrap(null, 'search', function (Form $form) { // Search Field $form->add('field', new ListField())->label(Translator::translate('phoenix.grid.search.field.label'))->set('display', false)->defaultValue('*')->addOption(new Option(Translator::translate('phoenix.core.all'), '*'))->addOption(new Option(Translator::translate('admin.notification.field.title'), 'notification.title'))->addOption(new Option(Translator::translate('admin.notification.field.alias'), 'notification.alias')); // Search Content $form->add('content', new TextField())->label(Translator::translate('phoenix.grid.search.label'))->set('placeholder', Translator::translate('phoenix.grid.search.label')); }); /* * Filter Control * ------------------------------------------------- * Add filter fields to this section. * Remember to add onchange event => this.form.submit(); or Phoenix.post(); * * You can override filter actions in NotificationsModel::configureFilters() */ $form->wrap(null, 'filter', function (Form $form) { // State $form->add('notification.state', new ListField())->label('State')->addOption(new Option('', ''))->addOption(new Option(Translator::translate('admin.notification.filter.state.select'), ''))->addOption(new Option(Translator::translate('phoenix.grid.state.published'), '1'))->addOption(new Option(Translator::translate('phoenix.grid.state.unpublished'), '0'))->set('onchange', 'this.form.submit()'); }); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $loginName = WarderHelper::getLoginName(); $langPrefix = WarderHelper::getPackage()->get('frontend.language.prefix', 'warder.'); $form->add($loginName, new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.' . $loginName)); $form->add('password', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password')); $form->add('remember', new Field\CheckboxField())->label(Translator::translate($langPrefix . 'user.field.remember')); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $langPrefix = WarderHelper::getPackage()->get('frontend.language.prefix', 'warder.'); $form->add('password', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password'))->set('placeholder', Translator::translate($langPrefix . 'user.field.password')); $form->add('password2', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password.confirm'))->set('placeholder', Translator::translate($langPrefix . 'user.field.password.confirm')); $form->add('email', new Field\HiddenField()); $form->add('token', new Field\HiddenField()); }
/** * Test value and return boolean * * @param mixed $value * * @return bool * @throws ValidateFailException */ protected function test($value) { $user = User::get(array($this->field => $value)); if ($user->notNull()) { throw new ValidateFailException(Translator::sprintf('warder.user.save.message.exists', $this->field, $value)); } return true; }
/** * setTitle * * @param string $title * * @return static */ public function setTitle($title = null) { $layout = $this->getLayout(); if ($layout != 'user' && !$title) { $langPrefix = WarderHelper::getPackage()->get('admin.language.prefix', 'warder.'); $title = Translator::translate($langPrefix . $layout . '.title'); } return parent::setTitle($title); }
/** * buildInput * * @param array $attrs * * @return string */ public function buildInput($attrs) { $warder = WarderHelper::getPackage(); $this->package = $this->get('package') ?: WarderHelper::getAdminPackage(true); $this->table = $this->get('table') ?: WarderTable::USERS; $langPrefix = $this->get('lang_prefix') ?: $warder->get('admin.language.prefix'); $this->def('buttonText', '<i class="glyphicon glyphicon-user fa fa-user"></i> ' . Translator::translate($langPrefix . 'user.modal.field.button.select')); return parent::buildInput($attrs); }
/** * getSubmenus * * @return array */ public function getSubmenus() { $menus = $this->findViewMenus(static::PLURAL); $view = $this->getParent()->getView(); $package = $view->getPackage(); $links = array(); foreach ($menus as $menu) { $active = static::active($menu, 'submenu'); $links[] = new HtmlElement('a', Translator::translate($package->getName() . '.' . $menu), array('href' => $view->getRouter()->html($menu), 'class' => $active)); } return $links; }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $loginName = $this->package->getLoginName(); $form->wrap('basic', null, function (Form $form) use($loginName) { $form->add('name', new Field\TextField())->label(Translator::translate('warder.user.field.name'))->required(); if (strtolower($loginName) != 'email') { $form->add($loginName, new Field\TextField())->label(Translator::translate('warder.user.field.' . $loginName))->required(); } $form->add('email', new Field\EmailField())->label(Translator::translate('warder.user.field.email'))->required(); $form->add('password', new Field\PasswordField())->label(Translator::translate('warder.user.field.password'))->set('autocomplete', 'off'); $form->add('password2', new Field\PasswordField())->label(Translator::translate('warder.user.field.password.confirm'))->set('autocomplete', 'off'); }); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $loginName = WarderHelper::getLoginName(); $langPrefix = WarderHelper::getPackage()->get('frontend.language.prefix', 'warder.'); $form->wrap('basic', null, function (Form $form) use($loginName, $langPrefix) { $form->add('name', new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.name'))->required(); if (strtolower($loginName) != 'email') { $form->add($loginName, new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.' . $loginName))->setValidator(new UserExistsValidator($loginName))->required(); } $form->add('email', new Field\EmailField())->label(Translator::translate($langPrefix . 'user.field.email'))->setValidator(new UserExistsValidator('email'))->required(); $form->add('password', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password'))->set('autocomplete', 'off'); $form->add('password2', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password.confirm'))->set('autocomplete', 'off'); }); }
/** * prepareExecute * * @return void */ protected function prepareExecute() { parent::prepareExecute(); $this->view['email'] = $this->input->getEmail('email'); $this->view['token'] = $this->input->get('token'); // Check email and token $user = User::get(array('email' => $this->view['email'])); if ($user->isNull()) { $this->backToConfirm(Translator::translate($this->langPrefix . 'user.not.found')); return; } if (!UserHelper::verifyPassword($this->view['token'], $user->reset_token)) { $this->backToConfirm('Invalid Token'); return; } }
/** * check * * @return static */ public function check() { $loginName = WarderHelper::getLoginName(); if (!$this->{$loginName}) { throw new \InvalidArgumentException(Translator::translate('warder.user.account.empty')); } $exists = UserMapper::findOne(array($loginName => $this->{$loginName})); if ($exists->notNull() && $this->id != $exists->id) { throw new \InvalidArgumentException(Translator::sprintf('warder.user.save.message.exists', $loginName, $this->{$loginName})); } if ($this->email) { $exists = UserMapper::findOne(array('email' => $this->email)); if ($exists->notNull() && $this->id != $exists->id) { throw new \InvalidArgumentException(Translator::sprintf('warder.user.save.message.exists', $loginName, $this->email)); } } return $this; }
/** * confirm * * @return boolean */ protected function confirm() { $token = $this->input->get('token'); $username = $this->input->getUsername('username'); $user = User::get(array('username' => $username)); if ($user->isNull()) { $this->setRedirect($this->router->http('forgot', array('task' => 'confirm', 'token' => $token)), Translator::translate('windwalker.user.no.user.found')); return false; } // Check token $password = new Password(); if (!$password->verify($token, $user->reset_token)) { $this->setRedirect($this->router->http('forgot', array('task' => 'confirm')), Translator::translate('windwalker.user.invalid.token')); return false; } $this->setRedirect($this->router->http('reset', array('username' => $username, 'token' => $token))); return true; }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ protected function doDefine(Form $form) { $warder = WarderHelper::getPackage(); $loginName = WarderHelper::getLoginName(); $langPrefix = $warder->get('admin.language.prefix'); /* * Search Control * ------------------------------------------------- * Add search fields as options, by default, model will search all columns. * If you hop that user can choose a field to search, change "display" to true. */ $this->wrap(null, 'search', function (Form $form) use($loginName, $langPrefix) { // Search Field $fieldField = $this->list('field')->label(Translator::translate('phoenix.grid.search.user.field.label'))->set('display', false)->defaultValue('*')->option(Translator::translate('phoenix.core.all'), '*'); if ($loginName != 'email') { $fieldField->option(Translator::translate($langPrefix . 'user.field.' . $loginName), 'user.' . $loginName); } $fieldField->option(Translator::translate($langPrefix . 'user.field.name'), 'user.name')->option(Translator::translate($langPrefix . 'user.field.email'), 'user.email')->option(Translator::translate($langPrefix . 'user.field.id'), 'user.id'); // Search Content $this->text('content')->label(Translator::translate('phoenix.grid.search.label'))->set('placeholder', Translator::translate('phoenix.grid.search.label')); }); /* * Filter Control * ------------------------------------------------- * Add filter fields to this section. * Remember to add onchange event => this.form.submit(); or Phoenix.post(); * * You can override filter actions in UsersModel::configureFilters() */ $this->wrap(null, 'filter', function (Form $form) use($loginName, $langPrefix) { // Activated $this->list('activation')->label($langPrefix . 'filter.activation.label')->option('', '')->option(Translator::translate($langPrefix . 'filter.activation.select'), '')->option(Translator::translate($langPrefix . 'filter.activation.activated'), '1')->option(Translator::translate($langPrefix . 'filter.activation.unactivated'), '0')->set('onchange', 'this.form.submit()'); // State $this->list('user.blocked')->label($langPrefix . 'filter.block.label')->option('', '')->option(Translator::translate($langPrefix . 'filter.block.select'), '')->option(Translator::translate($langPrefix . 'filter.block.blocked'), '1')->option(Translator::translate($langPrefix . 'filter.block.unblocked'), '0')->set('onchange', 'this.form.submit()'); }); /* * This is batch form definition. * ----------------------------------------------- * Every field is a table column. * For example, you can add a 'category_id' field to update item category. */ $this->wrap(null, 'batch', function (Form $form) { }); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { // Basic fieldset $form->wrap('basic', null, function (Form $form) { // ID $form->add('id', new Field\HiddenField()); // Title $form->add('title', new Field\TextField())->label(Translator::translate('admin.post.field.title'))->setFilter('trim')->required(true); // Alias $form->add('alias', new Field\TextField())->label(Translator::translate('admin.post.field.alias')); // Images $form->add('images', new Field\TextField())->label(Translator::translate('admin.post.field.images')); // URL $form->add('url', new Field\TextField())->label(Translator::translate('admin.post.field.url'))->setValidator(new Rule\UrlValidator())->set('class', 'validate-url'); // Example: Post List $form->add('post_list', new PostListField())->label('List Example'); // Example: Post Modal $form->add('post_modal', new PostModalField())->label('Modal Example'); }); // Text Fieldset $form->wrap('text', null, function (Form $form) { // Introtext $form->add('introtext', new Field\TextareaField())->label(Translator::translate('admin.post.field.introtext'))->set('rows', 10); // Fulltext $form->add('fulltext', new Field\TextareaField())->label(Translator::translate('admin.post.field.fulltext'))->set('rows', 10); }); // Created fieldset $form->wrap('created', null, function (Form $form) { // State $form->add('state', new Field\RadioField())->label(Translator::translate('admin.post.field.state'))->set('class', 'btn-group')->set('default', 1)->addOption(new Option(Translator::translate('phoenix.grid.state.published'), '1'))->addOption(new Option(Translator::translate('phoenix.grid.state.unpublished'), '0')); // Version $form->add('version', new Field\TextField())->label(Translator::translate('admin.post.field.version')); // Created $form->add('created', new Phoenix\Field\CalendarField())->label(Translator::translate('admin.post.field.created')); // Modified $form->add('modified', new Phoenix\Field\CalendarField())->label(Translator::translate('admin.post.field.modified')); // Author $form->add('created_by', new Field\TextField())->label(Translator::translate('admin.post.field.author')); // Modified User $form->add('modified_by', new Field\TextField())->label(Translator::translate('admin.post.field.modifiedby')); }); }
/** * getOrphans * * @param boolean $flatten * @param int $stripPrefix * * @return array */ public static function getOrphans($flatten = true, $stripPrefix = 1) { $orphans = Translator::getInstance()->getOrphans(); foreach ($orphans as $key => $value) { $value = explode('.', $key); $value = array_map('ucfirst', $value); foreach (range(1, $stripPrefix) as $i) { array_shift($value); } $value = implode(' ', $value); $orphans[$key] = $value; } if (!$flatten) { $reg = new Structure(); foreach ($orphans as $key => $value) { $reg->set($key, $value); } $orphans = $reg->toArray(); } return $orphans; }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $warder = WarderHelper::getPackage(); $loginName = WarderHelper::getLoginName(); $langPrefix = $warder->get('admin.language.prefix', 'warder.'); // Basic fieldset $form->wrap('basic', null, function (Form $form) use($loginName, $langPrefix) { // Name $form->add('name', new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.name'))->required(true); if ($loginName != 'email') { // Name $form->add($loginName, new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.' . $loginName))->required(true); } // Email $form->add('email', new Field\EmailField())->label(Translator::translate($langPrefix . 'user.field.email'))->required(); // Password $form->add('password', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password')); // Password $form->add('password2', new Field\PasswordField())->label(Translator::translate($langPrefix . 'user.field.password.confirm')); }); // Created fieldset $form->wrap('created', null, function (Form $form) use($langPrefix) { if (class_exists(SingleImageDragField::class)) { // Avatar $form->add('avatar', new SingleImageDragField())->label(Translator::translate($langPrefix . 'user.field.avatar'))->set('default_image', AvatarUploadHelper::getDefaultImage()); } // Blocked $form->add('blocked', new Field\RadioField())->label(Translator::translate($langPrefix . 'user.field.name'))->set('class', 'btn-group')->set('default', 0)->option(Translator::translate($langPrefix . 'user.field.blocked.block'), 1)->option(Translator::translate($langPrefix . 'user.field.blocked.unblock'), 0); // ID $form->add('id', new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.id'))->readonly(); // Registered $form->add('registered', new CalendarField())->label(Translator::translate($langPrefix . 'user.field.registered'))->disabled(); // Last Login $form->add('last_login', new CalendarField())->label(Translator::translate($langPrefix . 'user.field.last.login'))->disabled(); // Last Reset // $form->add('last_reset', new CalendarField) // ->label(Translator::translate($langPrefix . 'user.field.last.reset')) // ->set('readonly', true); }); }
/** * Define the form fields. * * @param Form $form The Windwalker form object. * * @return void */ public function define(Form $form) { $langPrefix = LunaHelper::getLangPrefix(); // Title $form->add('title', new Field\TextField())->label(Translator::translate($langPrefix . 'article.field.title'))->set('placeholder', Translator::translate($langPrefix . 'article.field.title'))->setFilter('trim')->required(true); // Alias $form->add('alias', new Field\TextField())->label(Translator::translate($langPrefix . 'article.field.alias'))->set('placeholder', Translator::translate($langPrefix . 'article.field.alias')); // Basic fieldset $form->wrap('basic', null, function (Form $form) use($langPrefix) { }); // Text Fieldset $form->wrap('text', null, function (Form $form) use($langPrefix) { // Introtext $form->add('body', new SummernoteEditorField())->label(Translator::translate($langPrefix . 'article.field.introtext'))->set('options', array('height' => 450))->set('rows', 10); }); // Created fieldset $form->wrap('created', null, function (Form $form) use($langPrefix) { // Title $form->add('short_title', new Field\TextField())->label('Short Title')->set('placeholder', 'Short Title')->setFilter('trim'); // URL $form->add('url', new Field\TextField())->label('URL')->set('placeholder', 'URL')->set('class', 'validation-url')->setFilter('trim'); // State $form->add('state', new Field\RadioField())->label(Translator::translate($langPrefix . 'article.field.state'))->set('class', 'btn-group')->set('default', 1)->addOption(new Option(Translator::translate('phoenix.grid.state.published'), '1'))->addOption(new Option(Translator::translate('phoenix.grid.state.unpublished'), '0')); // ID $form->add('id', new Field\HiddenField()); // Icon $form->add('icon', new IconFontAwesomeModalField())->label('Icon'); // Created $form->add('created', new Phoenix\Field\CalendarField())->label(Translator::translate($langPrefix . 'article.field.created')); // Modified $form->add('modified', new Phoenix\Field\CalendarField())->label(Translator::translate($langPrefix . 'article.field.modified'))->disabled(); if (WarderHelper::tableExists('users')) { // Author $form->add('created_by', new UserModalField())->label(Translator::translate($langPrefix . 'article.field.author')); // Modified User $form->add('modified_by', new UserModalField())->label(Translator::translate($langPrefix . 'article.field.modifiedby'))->readonly(); } }); }
/** * Execute the controller. * * @return mixed Return executed result. * * @throws \LogicException * @throws \RuntimeException */ public function doExecute() { $model = new LoginModel(); $user = $this->input->getVar('user'); $user = new Data($user); $result = $model->login($user['username'], $user['password'], $user['remember']); $package = $this->getPackage(); if ($result) { $url = $package->get('redirect.login'); $msg = Translator::translate('windwalker.user.login.success'); } else { $router = $this->package->getRouter(); $url = $router->http('login', array(), RestfulRouter::TYPE_FULL); $msg = Translator::translate('windwalker.user.login.fail'); } $uri = new Uri($url); if (!$uri->getScheme()) { $url = $this->app->get('uri.base.full') . $url; } $this->setRedirect($url, $msg); return true; }
/** * validate * * @param array $data * @param Form $form * * @return bool * @throws ValidateFailException */ public function validate($data, Form $form = null) { $form = $form ?: $this->getForm('edit'); $form->bind($data); if ($form->validate()) { return true; } $errors = $form->getErrors(); $msg = array(); foreach ($errors as $error) { $field = $error->getField(); if ($error->getResult() == ValidateResult::STATUS_REQUIRED) { $msg[ValidateResult::STATUS_REQUIRED][] = Translator::sprintf('phoenix.message.validation.required', $field->getLabel() ?: $field->getName(false)); } elseif ($error->getResult() == ValidateResult::STATUS_FAILURE) { $msg[ValidateResult::STATUS_FAILURE][] = Translator::sprintf('phoenix.message.validation.failure', $field->getLabel() ?: $field->getName(false)); } } throw new ValidateFailException($msg); }
/** * doSave * * @param DataInterface $data * * @return bool * * @throws ValidateFailException */ protected function doSave(DataInterface $data) { $user = User::get(array('email' => $this->data['email'])); if ($user->isNull()) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'user.not.found')); } // Check token $password = new Password(); if (!$password->verify($this->data['token'], $user->reset_token)) { throw new ValidateFailException('Invalid Token'); } return true; }
/** * getSuccessMessage * * @param Data $data * * @return string */ public function getSuccessMessage($data = null) { return Translator::plural($this->langPrefix . 'message.batch.' . $this->action . '.success', count($this->pks), count($this->pks)); }
/** * init * * @return void */ public function boot() { parent::boot(); Translator::loadFile('phoenix', 'ini', $this); }
/** * setTitle * * @param string $title * * @return static */ public function setTitle($title = null) { $title = $title ?: Translator::sprintf('phoenix.title.grid', Translator::translate($this->langPrefix . $this->getName() . '.title')); return parent::setTitle($title); }
/** * sendEmail * * @param string $email * @param string $body * * @return void */ protected function sendEmail($email, $body) { Mailer::send(function (MailMessage $message) use($email, $body) { $message->subject(Translator::translate($this->langPrefix . 'mail.subject'))->from($this->app->get('mail.from.email', $this->app->get('mail.from.email')), $this->app->get('mail.from.name', $this->app->get('mail.from.name')))->to($email)->body($body); }); }
/** * validate * * @param DataInterface $data * * @return void * * @throws ValidateFailException */ protected function validate(DataInterface $data) { $validator = new EmailValidator(); if (!$validator->validate($data->email)) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.email.invalid')); } parent::validate($data); $loginName = WarderHelper::getLoginName(); if ($loginName != 'email') { $user = User::get(array($loginName => $data->{$loginName})); if ($user->notNull() && $user->id != $data->id) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.user.account.exists')); } } $user = User::get(array('email' => $data->email)); if ($user->notNull() && $user->id != $data->id) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.user.email.exists')); } if ('' !== (string) $data->password) { if ($data->password != $data->password2) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.password.not.match')); } unset($data->password2); } else { unset($data->password); } }
/** * langKey * * @param string $key * * @return void */ public static function translate($key) { static::translator(); $asset = static::getAsset(); $text = Translator::translate($key); /** @var Language $language */ $language = Translator::getInstance(); $handler = $language->getNormalizeHandler(); $key = call_user_func($handler, $key); $asset->internalScript("Phoenix.Translator.addKey('{$key}', '{$text}')"); }
/** * doSave * * @param DataInterface $data * * @return bool * * @throws ValidateFailException */ protected function doSave(DataInterface $data) { if (!trim($this->data['password'])) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.password.not.entered')); } if ($this->data['password'] != $this->data['password2']) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.password.not.match')); } /** @var UserRecord $user */ $user = User::get(array('email' => $this->data['email'])); if ($user->isNull()) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.user.not.found')); } $passwordObject = new Password(); if (!$passwordObject->verify($this->data['token'], $user->reset_token)) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.invalid.token')); } $user->password = $passwordObject->create($this->data['password']); $user->reset_token = ''; $user->last_reset = ''; User::save($user); }
/** * validate * * @param DataInterface $data * * @return void * * @throws ValidateFailException */ protected function validate(DataInterface $data) { $validator = new EmailValidator(); if (!$validator->validate($data->email)) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.email.invalid')); } $form = $this->model->getForm('registration', 'user'); $this->model->validate($data->dump(), $form); if (!$data->password) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.password.not.entered')); } if ($data->password != $data->password2) { throw new ValidateFailException(Translator::translate($this->langPrefix . 'message.password.not.match')); } unset($data->password2); }