/php5-3/app/controllers/backoffice/Authentication.class.php
PHP | 168 lines | 130 code | 25 blank | 13 comment | 17 complexity | 5beb461212d42cd7ffeb0d7d4f72d936 MD5 | raw file
Possible License(s): MPL-2.0-no-copyleft-exception
- <?php
- namespace app\controllers\backoffice;
- /**
- *
- * Public Class Authentication
- *
- * Classe responsavel pelo login do sistema
- *
- *
- * @package app.controllers.backoffice
- * @access public
- * @author Ronaldo Silva <ronaldo.silva@xsystems.com.br>
- * @version 1.0 08/05/2014
- *
- */
- class Authentication extends \core\controllers\BackOfficeController{
- public $auth = false;
- public $authRedirection = 'Authentication';
- public function initContent(){
- parent::initContent();
- $cookie = new \core\lib\Cookie();
- if($cookie->cookieExists('XXloginXX') && \core\lib\Tools::isSubmit('superlogout')){
- $cookie->destroy('XXloginXX');
- \core\lib\Tools::redirect('?controller=authentication&redirect=' . \core\lib\Tools::getValue('redirect'));
- }
- $this->context->smarty->assign('redirect', \core\lib\Tools::getValue('redirect'));
- if(\core\lib\Tools::getValue('action') == 'forget'){
- $this->setTemplate(_ADMIN_THEME_DIR . 'forget-password.tpl');
- $this->context->smarty->assign('email', trim(\core\lib\Tools::getValue('email')));
- }else{
- if($cookie->cookieExists('XXloginXX')){
- $this->setTemplate(_ADMIN_THEME_DIR . 'lock-screen.tpl');
- $cookieData = $cookie->read('XXloginXX');
- $this->context->smarty->assign('id', $cookieData->id);
- $this->context->smarty->assign('redirect', \core\lib\Tools::getValue('redirect'));
- $this->context->smarty->assign('token', base64_encode(md5($cookieData->ipAddress)));
- $this->context->smarty->assign('bodyClass', 'lock-screen');
- }else{
- $this->context->smarty->assign('username', \core\lib\Tools::getValue('username'));
- $this->setTemplate(_ADMIN_THEME_DIR . 'authentication.tpl');
- }
- }
- $this->liveEdit[] = 'Authentication.init();';
- $this->context->smarty->assign('liveEdit', $this->liveEdit);
- }
- public function setMedia(){
- parent::setMedia();
- $this->addJs('plugins/form/jquery.form.min.js');
- $this->addJs('plugins/validate/jquery.validate.min.js');
- $this->addJs('Authentication.js');
- }
- public function postProcess(){
- parent::postProcess();
- switch(\core\lib\Tools::getValue('action')){
- case 'login' :
- $this->processLogin();
- break;
- case 'forget' :
- $this->forgetPassword();
- break;
- case 'unlock' :
- $this->unlock();
- break;
- }
- }
- public function forgetPassword(){
- $validator = new \core\lib\DataValidator();
- $validator->set('Email', \core\lib\Tools::getValue('email'))->isEmail()->required();
- if($validator->validate()){
- if(\core\lib\Tools::getValue('email') === 'ronaldo.silva@xsystems.com.br'){
- $this->msgs[] = 'Enviamos um email com o link para você redefinir a sua senha.';
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => false, 'msg' => $this->msgs)));
- }else{
- \core\lib\Tools::displayMessage($this->msgs, 'success');
- }
- }else{
- $this->msgs[] = 'Desculpe mas o email que você digitou não foi encontrado em nosso servidor!';
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => true, 'errors' => $this->msgs)));
- }else{
-
- \core\lib\Tools::displayMessage($this->msgs, 'danger');
- }
- }
- }else{
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => true, 'errors' => $validator->getErrors())));
- }else{
- \core\lib\Tools::displayMessage($validator->getErrors(), 'danger');
- }
- }
- }
- public function unlock(){
- $dataValidator = new \core\lib\DataValidator();
- $dataValidator->set('id', \core\lib\Tools::getValue('id'))->isInteger()->required();
- }
- public function processLogin(){
- $dataValidator = new \core\lib\DataValidator();
- $dataValidator->set('Usuário', trim(\core\lib\Tools::getValue('username')))
- ->required()->isAlphaNum('-_.');
- $dataValidator->set('Senha', trim(\core\lib\Tools::getValue('password')))
- ->required()->isAlphaNum('&@#$!,.;:/?\|~^Çç][{}áéíóúâêîôûãõàèìòù');
- if(!$dataValidator->validate()){
- $this->msgs = $dataValidator->getErrors();
- }
- $email = 'ronaldobrandini';
- $senha = \core\lib\Tools::passEncrypt('metallica');
- if(!count($this->msgs)){
- $criteria = new \core\data\dbquery\SqlCriteria();
- $criteria->add(new \core\data\dbquery\SqlFilter('user', '=', trim(\core\lib\Tools::getValue('username'))));
- $criteria->add(new \core\data\dbquery\SqlFilter('password', '=', \core\lib\Tools::passEncrypt(trim(\core\lib\Tools::getValue('password')))));
- if(trim(\core\lib\Tools::getValue('username')) === $email &&
- \core\lib\Tools::passEncrypt(trim(\core\lib\Tools::getValue('password'))) === $senha){
- $session = new \core\lib\Session();
- $session->createUserSession(1);
- if(\core\lib\Tools::getValue('remember')){
- $cookie = new \core\lib\Cookie();
- $cookie->setContent('id', 1);
- $cookie->setContent('ipAddress', \core\lib\Tools::getIpAddress());
- $cookie->write('XXloginXX', 'dashboard/', strtotime('+30 days'));
- }
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => false, 'redirect' => '?controller=' . \core\lib\Tools::getValue('redirect'))));
- }else{
- \core\lib\Tools::redirect('?controller=' . \core\lib\Tools::getValue('redirect'));
- }
- }else{
- $this->msgs[] = 'Não encontramos um usuário válido com os dados fornecidos.';
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => true, 'errors' => $this->msgs)));
- }else{
- \core\lib\Tools::displayMessage($this->msgs, 'warning');
- }
- }
- }else{
- if($this->ajax){
- die(\core\lib\Tools::jsonEncode(array('hasErrors' => true, 'errors' => $this->msgs)));
- }else{
- \core\lib\Tools::displayMessage($dataValidator->getErrors(), 'warning');
- }
- }
- }
- }