/** * a fast way to signin in the user profile */ public function fastloginAction() { $request = $this->getRequest(); $NS = new Zend_Session_Namespace('Default'); $registry = Shineisp_Registry::getInstance(); $translator = $registry->Zend_Translate; $secretKey = $request->getParam('id'); if (!empty($secretKey)) { $sha1 = Shineisp_Commons_Hasher::unhash_string($secretKey); // Trying to get the user in the database $retval = Customers::getCustomerbyEmailSha1($sha1); if (count($retval) == 0) { $result = new Zend_Auth_Result(Zend_Auth_Result::FAILURE_CREDENTIAL_INVALID, $secretKey); $NS->customer = null; $this->view->message = $translator->translate('Email Address or Password is incorrect.'); return $this->_helper->viewRenderer('generic'); } else { $NS->customer = $retval[0]; // Set the default control panel language if (!empty($retval[0]['language'])) { $lang = $retval[0]['language']; } } } // If the software detects that there is a redirect to a specific page then ... if (!empty($NS->goto) && is_array($NS->goto)) { $this->_helper->redirector($NS->goto['action'], $NS->goto['controller'], $NS->goto['module'], $NS->goto['options']); } if (!empty($lang)) { $this->_helper->redirector('index', 'dashboard', 'default', array('lang' => $lang)); // back to login page } else { $this->_helper->redirector('index', 'dashboard', 'default'); } }
/** * Check the user credencials by the secret key * @param string $email */ public static function checkIspCredencialsBySecretKey($secretKey) { // Remove salt from hashed string $string = Shineisp_Commons_Hasher::unhash_string($secretKey); // Check if the user exists! $record = Doctrine_Query::create()->select('u.*, r.*, p.*, s.*')->from('AdminUser u')->leftJoin('u.Isp i')->leftJoin('u.AdminRoles r')->leftJoin('r.AdminPermissions p')->leftJoin('p.AdminResources s')->where('SHA1(i.email) = ?', $string)->limit(1)->execute(array(), Doctrine::HYDRATE_ARRAY); if ($record) { return !empty($record[0]) ? $record[0] : FALSE; } else { return NULL; } }