/** * Method which changes form object before all operations (validation and saving). * * @access protected * @param Form $form * @since 1.0.1-dev, 2015-02-20 * @version 2.1.1-dev */ protected function alterForm(Form &$form) { parent::alterForm($form); $sCurrentRoute = Router::getCurrentRouteName(); # other pages switch ($sCurrentRoute) { // USER PASSWORD CHANGE case 'user_password_change': case 'password_recovery_code': $form->getField('password')->setLabel(__('New password')); $form->addField(Form\Field\Password::factory('new_password_confirm', $form)->setRequired()->setLabel(__('Confirm new password'))->addRule(['\\Plethora\\Validator\\Rules::sameAs', [':value', ':valuefrom:password']])); break; // USER REGISTRATION // USER REGISTRATION case 'register': $loginAttributes = $form->getField('login')->getAttributes(); $loginAttributes->removeAttribute('disabled'); $emailAttrs = $form->getField('email')->getAttributes(); $emailAttrs->removeAttribute('disabled'); $form->addField(Form\Field\Text::factory('email_confirm', $form)->setRequired()->setLabel(__('Confirm e-mail'))->setWeightToBeAfter('email')->addRule(['\\Plethora\\Validator\\Rules::sameAs', [':value', ':valuefrom:email']])); $form->getField('password')->setWeightToBeAfter('email_confirm'); $form->addField(Form\Field\Password::factory('password_confirm', $form)->setRequired()->setLabel(__('Confirm password'))->addRule(['\\Plethora\\Validator\\Rules::sameAs', [':value', ':valuefrom:password']])->setWeightToBeAfter('password')); break; } if (in_array($sCurrentRoute, ['backend', 'user_profile_edit', 'user_password_change'])) { $confirmField = Form\Field\PasswordConfirm::factory('password_check', $form); $confirmField->setLabel(__('Enter your password')); $confirmField->setTip(__('This field is used for a security purposes.')); $confirmField->setWeight(999); $confirmField->setPrefix('<div class="field_prefix" style="margin-top: 50px;"></div>'); $form->addField($confirmField); } if (in_array($sCurrentRoute, ['user_profile_edit'])) { $form->removeField('roles'); } if (in_array($sCurrentRoute, ['backend'])) { /* @var $password Field\Password */ $password = $form->getField('password'); $password->setRequiredNot(); } # captcha on needed pages if (in_array($sCurrentRoute, ['register'])) { $captchaField = Form\Field\Captcha::singleton('captcha'); $captchaField->setLabel(__('Security field')); $captchaField->setWeight(999999999); $captchaField->setFormIfSingleton($form); } }
/** * ACTION - User login. * * @access public * @return View * @since 1.0.2, 2013-12-07 * @version 1.0.7-dev, 2015-05-04 */ public function actionLogin() { $this->setTitle(Core::getAppName() . ' - ' . __('Login form')); $this->addBreadCrumb(__('Login form')); $oLoggedUser = Model\User::getLoggedUser(); if ($oLoggedUser instanceof Model\User) { Route::factory('user_profile')->redirectTo(['id' => $oLoggedUser->getId()]); } $failedLogins = \User\LoginFail::getCachedData(); if ($failedLogins > 4) { return View::factory('base/alert')->set('sType', 'danger')->set('sMsg', __('to.many.incorrect.logins')); } $oLoginForm = Form::factory('login'); $oLoginForm->addField(Form\Field\Text::factory('login', $oLoginForm)); $oLoginForm->addField(Form\Field\Password::factory('password', $oLoginForm)); if ($oLoginForm->isSubmittedAndValid()) { $sUsername = $oLoginForm->get('login'); $sPassword = $oLoginForm->get('password'); $sEncryptedPassword = Helper\Encrypter::factory()->encrypt($sUsername, $sPassword); $oUser = DB::query("SELECT u FROM \\Model\\User u WHERE u.login = :login AND u.password = :pass")->param('login', $sUsername)->param('pass', $sEncryptedPassword)->single(); if ($oUser instanceof Model\User) { Session::set('username', $sUsername); Session::set('uid', (int) $oUser->getId()); $oUser->setLoginDateNOW(); DB::flush(); # Get role permissions for particular user and set them in session \UserPermissions::reset(); Route::factory(Router::getCurrentRouteName())->redirectTo(); } else { $currentUrl = Router::currentUrl(); $alert = __('You have entered wrong username or password. Try again.'); \User\LoginFail::addLoginFail(); Session::flash($currentUrl, $alert, 'danger'); } } $oLoginForm->addToSuffix(View::factory('user/frontend/login_links')->render()); return View::factory('base/form')->bind('oForm', $oLoginForm); }