/** * 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()); }
/** * 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')); }
/** * 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); }
/** * prepareExecute * * @return void */ protected function prepareExecute() { if (UserHelper::isLogin()) { $warder = WarderHelper::getPackage(); $this->redirect($this->router->route($warder->get('frontend.redirect.login', 'home'))); return; } parent::prepareExecute(); }
/** * 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); }
/** * goToLogin * * @param string $return * * @return void */ public static function goToLogin($return = null) { $query = array(); if ($return) { $query['return'] = base64_encode($return); } $package = WarderHelper::getPackage()->getCurrentPackage(); $url = $package->router->route('login', $query); Ioc::getApplication()->redirect($url); }
/** * getSuccessRedirect * * @param DataInterface $data * * @return string */ protected function getSuccessRedirect(DataInterface $data = null) { $return = $this->getUserState($this->getContext('return')); if ($return) { $this->removeUserState($this->getContext('return')); return base64_decode($return); } else { return $this->router->route(WarderHelper::getPackage()->get('frontend.redirect.login', 'home')); } }
/** * prepareExecute * * @return void */ protected function prepareExecute() { if (UserHelper::isLogin()) { $warder = WarderHelper::getPackage(); $this->redirect($this->router->route($warder->get('frontend.redirect.login', 'home'))); return; } parent::prepareExecute(); $this->data['email'] = $this->input->getEmail('email'); $this->data['token'] = $this->input->get('token'); }
/** * doExecute * * @return mixed */ protected function doExecute() { User::logout(); $return = $this->input->getBase64($this->package->get('admin.login.return_key', 'return')); if ($return) { $this->setRedirect(base64_decode($return)); return true; } $this->setRedirect($this->router->route(WarderHelper::getPackage()->get('admin.redirect.logout', 'home'))); return true; }
/** * 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'); }); }
/** * 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) { $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); }); }
/** * buildInput * * @param array $attrs * * @return mixed|void */ public function buildInput($attrs) { $warder = WarderHelper::getPackage(); $this->table = $warder->get('table.users', 'username'); return parent::buildInput($attrs); }
/** * getHomeRedirect * * @return string */ protected function getHomeRedirect() { return $this->router->route(WarderHelper::getPackage()->get('frontend.redirect.login', 'home')); }
/** * WarderMethod constructor. * * @param AbstractPackage $package */ public function __construct(AbstractPackage $package = null) { $this->package = $package ?: WarderHelper::getPackage(); }
/** * onViewBeforeRender * * @param Event $event * * @return void */ public function onViewBeforeRender(Event $event) { $view = $event['view']; if (!$view instanceof HtmlView) { return; } /** * @var HtmlView $view * @var BladeRenderer $renderer */ $name = $view->getName(); $renderer = $view->getRenderer(); $app = $view->getPackage()->app; // Prepare View data if ($this->warder->isFrontend()) { // Extends $view['warder'] = new Data(['extends' => $this->warder->get('frontend.view.extends', '_global.html'), 'langPrefix' => $this->warder->get('frontend.language.prefix', 'warder.'), 'package' => WarderHelper::getPackage()]); // Paths $renderer->addPath(WARDER_SOURCE . '/Templates/' . $name . '/' . $app->get('language.locale'), PriorityQueue::LOW - 25); $renderer->addPath(WARDER_SOURCE . '/Templates/' . $name . '/' . $app->get('language.default'), PriorityQueue::LOW - 25); $renderer->addPath(WARDER_SOURCE . '/Templates/' . $name, PriorityQueue::LOW - 25); } elseif ($this->warder->isAdmin()) { // Extends $view['warder'] = new Data(['extends' => $this->warder->get('admin.view.extends', '_global.html'), 'langPrefix' => $this->warder->get('admin.language.prefix', 'warder.'), 'package' => WarderHelper::getPackage()]); // Paths $renderer->addPath(WARDER_SOURCE_ADMIN . '/Templates/' . $name . '/' . $app->get('language.locale'), PriorityQueue::LOW - 25); $renderer->addPath(WARDER_SOURCE_ADMIN . '/Templates/' . $name . '/' . $app->get('language.default'), PriorityQueue::LOW - 25); $renderer->addPath(WARDER_SOURCE_ADMIN . '/Templates/' . $name, PriorityQueue::LOW - 25); } }
/** * onUserAuthorisation * * @param Event $event * * @return void */ public function onUserAuthorisation(Event $event) { $user = $event['user']; $langPrefix = WarderHelper::getPackage()->get('admin.language.prefix', 'warder.'); if ($user->activation) { throw new AuthenticateFailException(Translator::translate($langPrefix . 'login.message.inactivated')); } if ($user->blocked) { throw new AuthenticateFailException(Translator::translate($langPrefix . 'login.message.blocked')); } }
/** * prepareExecute * * @return void */ protected function prepareExecute() { if (UserHelper::isLogin()) { $warder = WarderHelper::getPackage(); $this->redirect($this->router->route($warder->get('frontend.redirect.login', 'home'))); return; } parent::prepareExecute(); $this->token = UserHelper::getToken($this->data['email']); $this->data['activation'] = UserHelper::hashPassword($this->token); }
/** * 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('email', new Field\EmailField())->label(Translator::translate($langPrefix . '.user.field.email'))->set('placeholder', Translator::translate($langPrefix . '.user.field.email'))->required(); $form->add('token', new Field\TextField())->label(Translator::translate($langPrefix . 'user.field.token'))->set('placeholder', Translator::translate($langPrefix . 'user.field.token'))->required(); }
/** * WarderMethod constructor. * * @param AbstractPackage $warder */ public function __construct(AbstractPackage $warder = null) { $this->warder = $warder ?: WarderHelper::getPackage(); }
/** * login * * @param string $account * @param string $password * @param bool $remember * @param array $options * * @return bool * @throws ValidateFailException */ public function login($account, $password, $remember = false, $options = array()) { $loginName = WarderHelper::getLoginName(); $credential = new Credential(); $credential->{$loginName} = $account; $credential->password = $password; if (isset($options['provider'])) { $credential->_provider = $options['provider']; } try { $result = User::login($credential, (bool) $remember, $options); } catch (AuthenticateFailException $e) { $langPrefix = WarderHelper::getPackage()->get('admin.language.prefix', 'warder.'); switch (array_values($e->getMessages())[0]) { case Authentication::USER_NOT_FOUND: $message = Translator::translate($langPrefix . 'login.message.user.not.found'); break; case Authentication::EMPTY_CREDENTIAL: $message = Translator::translate($langPrefix . 'login.message.empty.credential'); break; case Authentication::INVALID_CREDENTIAL: $message = Translator::translate($langPrefix . 'login.message.invalid.credential'); break; case Authentication::INVALID_PASSWORD: $message = Translator::translate($langPrefix . 'login.message.invalid.password'); break; case Authentication::INVALID_USERNAME: $message = Translator::translate($langPrefix . 'login.message.invalid.username'); break; default: $message = $e->getMessage(); } throw new ValidateFailException($message); } return $result; }