diff --git a/application/modules/default/views/scripts/authorization/login.phtml b/application/modules/default/views/scripts/authorization/login.phtml index a9a78e29f..71f3995cc 100644 --- a/application/modules/default/views/scripts/authorization/login.phtml +++ b/application/modules/default/views/scripts/authorization/login.phtml @@ -1,153 +1,155 @@ . **/ $users = $this->newUsers($limit = 216,'created_at','DESC'); $buildMemberUrl = new Default_View_Helper_BuildMemberUrl(); $url_param_redirect = isset($this->redirect) ? 'redirect/'.$this->redirect : null; $this->headMeta()->setName('robots', 'noindex, nofollow'); ?>
render('authorization/partials/loginForm.phtml') ?>

+

Login with

Github
- + */ ?> +
Join us?
$user) { ?>
inlineScript()->appendScript( ' $(document).ready(function(){ PartialJsonLogin.setup(); }); '); diff --git a/application/modules/default/views/scripts/authorization/register.phtml b/application/modules/default/views/scripts/authorization/register.phtml index b6f31dd30..5e860f526 100644 --- a/application/modules/default/views/scripts/authorization/register.phtml +++ b/application/modules/default/views/scripts/authorization/register.phtml @@ -1,197 +1,198 @@ . **/ $helperNewUsers = new Default_View_Helper_NewUsers(); $users = $helperNewUsers->newUsers($limit = 216,'created_at','DESC'); $buildMemberUrl = new Default_View_Helper_BuildMemberUrl(); $helperImage = new Default_View_Helper_Image(); $this->headMeta()->setName('robots', 'noindex, nofollow'); ?>
render('authorization/partials/registerForm.phtml') ?>

+

Register with

Github
- + */ ?>
Already have an account?
$user) { ?>
inlineScript()->appendScript( ' $(document).ready(function(){ // PartialJson.setup(); }); '); diff --git a/library/Local/Auth/Adapter/Ocs.php b/library/Local/Auth/Adapter/Ocs.php index 98fd23f99..dd4e9a3f8 100644 --- a/library/Local/Auth/Adapter/Ocs.php +++ b/library/Local/Auth/Adapter/Ocs.php @@ -1,267 +1,284 @@ . **/ class Local_Auth_Adapter_Ocs implements Local_Auth_Adapter_Interface { const MD5 = 'enc01'; const SHA = 'enc02'; const PASSWORDSALT = 'ghdfklsdfgjkldfghdklgioerjgiogkldfgndfohgfhhgfhgfhgfhgfhfghfgnndf'; protected $_db; protected $_tableName; protected $_identity; protected $_credential; protected $_encryption; protected $_resultRow; /** * __construct() - Sets configuration options * * @param Zend_Db_Adapter_Abstract $dbAdapter If null, default database adapter assumed * @param string $tableName * * @throws Zend_Auth_Adapter_Exception */ public function __construct(Zend_Db_Adapter_Abstract $dbAdapter = null, $tableName = null) { $this->_db = $dbAdapter; if (empty($this->_db)) { $this->_db = Zend_Db_Table_Abstract::getDefaultAdapter(); if (empty($this->_db)) { throw new Zend_Auth_Adapter_Exception('No database adapter present'); } } $this->_tableName = $tableName; } public static function getEncryptedPassword($password, $passwordType) { return $passwordType == Default_Model_DbTable_Member::PASSWORD_TYPE_HIVE ? sha1((self::PASSWORDSALT . $password . self::PASSWORDSALT)) : md5($password); } /** * Performs an authentication attempt * * @return Zend_Auth_Result * @throws Zend_Exception */ public function authenticate() { $validator = new Zend_Validate_EmailAddress(); if ($validator->isValid($this->_identity)) { $resultSet = $this->fetchUserByEmail(); } else { $resultSet = $this->fetchUserByUsername(); } if (count($resultSet) == 0) { return $this->createAuthResult(Zend_Auth_Result::FAILURE_IDENTITY_NOT_FOUND, $this->_identity, array('A record with the supplied identity could not be found.')); } if (count($resultSet) > 1) { return $this->createAuthResult(Zend_Auth_Result::FAILURE_IDENTITY_AMBIGUOUS, $this->_identity, array('More than one record matches the supplied identity.')); } if (empty($resultSet[0]['email_checked'])) { return $this->createAuthResult(Local_Auth_Result::MAIL_ADDRESS_NOT_VALIDATED, $resultSet[0]['member_id'], array('Mail address not validated.')); } if ($resultSet[0]['is_active'] == 0) { return $this->createAuthResult(Local_Auth_Result::ACCOUNT_INACTIVE, $this->_identity, array('User account is inactive.')); } $this->_resultRow = array_shift($resultSet); return $this->createAuthResult(Zend_Auth_Result::SUCCESS, $this->_identity, array('Authentication successful.')); } /** * @return array * @throws Zend_Exception */ private function fetchUserByEmail() { $sql = " SELECT `m`.*, `member_email`.`email_verification_value`, `member_email`.`email_checked` FROM {$this->_tableName} AS m JOIN member_email ON m.member_id = member_email.email_member_id AND member_email.email_primary = 1 WHERE m.is_active = :active AND m.is_deleted = :deleted AND m.login_method = :login AND m.mail = :mail AND m.`password` = :pwd"; $this->_db->getProfiler()->setEnabled(true); $resultSet = $this->_db->fetchAll($sql, array( 'active' => Default_Model_DbTable_Member::MEMBER_ACTIVE, 'deleted' => Default_Model_DbTable_Member::MEMBER_NOT_DELETED, 'login' => Default_Model_DbTable_Member::MEMBER_LOGIN_LOCAL, 'mail' => $this->_identity, 'pwd' => $this->_credential )); - Zend_Registry::get('logger')->debug(__METHOD__ . ' - sql take seconds: ' . $this->_db->getProfiler()->getLastQueryProfile() + + $sql = str_replace(':active', Default_Model_DbTable_Member::MEMBER_ACTIVE, $sql); + $sql = str_replace(':deleted', Default_Model_DbTable_Member::MEMBER_NOT_DELETED, $sql); + $sql = str_replace(':login',"'". Default_Model_DbTable_Member::MEMBER_LOGIN_LOCAL . "'", $sql); + $sql = str_replace(':mail', "'". $this->_identity . "'", $sql); + $sql = str_replace(':pwd', "'". $this->_credential . "'", $sql); + + + Zend_Registry::get('logger')->debug(__METHOD__ . ' - SQL: ' . $sql . ' - sql take seconds: ' . $this->_db->getProfiler()->getLastQueryProfile() ->getElapsedSecs()) ; $this->_db->getProfiler()->setEnabled(false); return $resultSet; } /** + * Fetches a user by username, username ist not case sensitve + * * @return array * @throws Zend_Exception */ private function fetchUserByUsername() { $sql = " SELECT `m`.*, `member_email`.`email_verification_value`, `member_email`.`email_checked` FROM `member` AS m JOIN `member_email` ON m.member_id = member_email.email_member_id AND member_email.email_primary = 1 WHERE m.`is_active` = :active AND m.`is_deleted` = :deleted AND m.`login_method` = :login AND - m.`username` = :username AND + LOWER(m.`username`) = LOWER(:username) AND m.`password` = :pwd"; $this->_db->getProfiler()->setEnabled(true); $resultSet = $this->_db->fetchAll($sql, array( 'active' => Default_Model_DbTable_Member::MEMBER_ACTIVE, 'deleted' => Default_Model_DbTable_Member::MEMBER_NOT_DELETED, 'login' => Default_Model_DbTable_Member::MEMBER_LOGIN_LOCAL, 'username' => $this->_identity, 'pwd' => $this->_credential )); - Zend_Registry::get('logger')->debug(__METHOD__ . ' - sql take seconds: ' . $this->_db->getProfiler()->getLastQueryProfile() + + $sql = str_replace(':active', Default_Model_DbTable_Member::MEMBER_ACTIVE, $sql); + $sql = str_replace(':deleted', Default_Model_DbTable_Member::MEMBER_NOT_DELETED, $sql); + $sql = str_replace(':login',"'". Default_Model_DbTable_Member::MEMBER_LOGIN_LOCAL . "'", $sql); + $sql = str_replace(':username', "'". $this->_identity . "'", $sql); + $sql = str_replace(':pwd', "'". $this->_credential . "'", $sql); + + Zend_Registry::get('logger')->debug(__METHOD__. ' - SQL: ' . $sql . ' - sql take seconds: ' . $this->_db->getProfiler()->getLastQueryProfile() ->getElapsedSecs()) ; $this->_db->getProfiler()->setEnabled(false); return $resultSet; } protected function createAuthResult($code, $identity, $messages) { return new Local_Auth_Result($code, $identity, $messages); } /** * @param string $identity * * @return Local_Auth_Adapter_Ocs * @throws Zend_Exception */ public function setIdentity($identity) { $this->_identity = $identity; return $this; } /** * @param string $credential * * @return Local_Auth_Adapter_Ocs * @throws Zend_Exception */ public function setCredential($credential) { switch ($this->_encryption) { case self::MD5 : $this->_credential = md5($credential); break; case self::SHA : $this->_credential = sha1((self::PASSWORDSALT . $credential . self::PASSWORDSALT)); break; default: throw new Zend_Exception('There is no default case for credential encryption.'); } return $this; } /** * @param mixed $encryption * * @return Local_Auth_Adapter_Ocs */ public function setEncryption($encryption) { $this->_encryption = $encryption; return $this; } /** * getResultRowObject() - Returns the result row as a stdClass object * * @param string|array $returnColumns * @param string|array $omitColumns * * @return stdClass|boolean */ public function getResultRowObject($returnColumns = null, $omitColumns = null) { if (!$this->_resultRow) { return false; } $returnObject = new stdClass(); if (null !== $returnColumns) { $availableColumns = array_keys($this->_resultRow); foreach ((array)$returnColumns as $returnColumn) { if (in_array($returnColumn, $availableColumns)) { $returnObject->{$returnColumn} = $this->_resultRow[$returnColumn]; } } return $returnObject; } else if (null !== $omitColumns) { $omitColumns = (array)$omitColumns; foreach ($this->_resultRow as $resultColumn => $resultValue) { if (!in_array($resultColumn, $omitColumns)) { $returnObject->{$resultColumn} = $resultValue; } } return $returnObject; } else { foreach ($this->_resultRow as $resultColumn => $resultValue) { $returnObject->{$resultColumn} = $resultValue; } return $returnObject; } } } \ No newline at end of file