[TASK] CGL FunctionCallArgumentSpacingTooMuchSpaceAfterComma
[Packages/TYPO3.CMS.git] / typo3 / sysext / sv / class.tx_sv_authbase.php
index 8fe544b..9cd0b98 100644 (file)
@@ -2,7 +2,7 @@
 /***************************************************************
 *  Copyright notice
 *
-*  (c) 2004-2010 René Fritz <r.fritz@colorcube.de>
+*  (c) 2004-2011 René Fritz <r.fritz@colorcube.de>
 *  All rights reserved
 *
 *  This script is part of the TYPO3 project. The TYPO3 project is
 /**
  * Service base class for 'User authentication'.
  *
- * @author     René Fritz <r.fritz@colorcube.de>
- */
-/**
- * [CLASS/FUNCTION INDEX of SCRIPT]
- *
- *
- *
- *   62: class tx_sv_authbase extends t3lib_svbase
- *   87:     function initAuth($mode, $loginData, $authInfo, &$pObj)
- *  110:     function compareUident($user, $loginData, $security_level='')
- *  129:     function writelog($type,$action,$error,$details_nr,$details,$data,$tablename='',$recuid='',$recpid='')
- *
- *              SECTION: create/update user - EXPERIMENTAL
- *  158:     function fetchUserRecord($username, $extraWhere='', $dbUserSetup='')
- *
- * TOTAL FUNCTIONS: 4
- * (This index is automatically created/updated by the extension "extdeveval")
- *
+ * @author     René Fritz <r.fritz@colorcube.de>
  */
 
 require_once(PATH_t3lib . 'class.t3lib_svbase.php');
@@ -53,13 +36,18 @@ require_once(PATH_t3lib . 'class.t3lib_svbase.php');
 /**
  * Authentication services class
  *
- * @author     René Fritz <r.fritz@colorcube.de>
+ * @author     René Fritz <r.fritz@colorcube.de>
  * @package TYPO3
  * @subpackage tx_sv
  */
-class tx_sv_authbase extends t3lib_svbase      {
+class tx_sv_authbase extends t3lib_svbase {
 
-       var $pObj;                      // Parent object
+       /**
+        * User object
+        *
+        * @var t3lib_userAuth
+        */
+       var $pObj;
 
        var $mode;                      // Subtype of the service which is used to call the service.
 
@@ -69,8 +57,8 @@ class tx_sv_authbase extends t3lib_svbase     {
        var $db_user = array();         // User db table definition
        var $db_groups = array();       // Usergroups db table definition
 
-       var $writeAttemptLog = false;   // If the writelog() functions is called if a login-attempt has be tried without success
-       var $writeDevLog = false;       // If the t3lib_div::devLog() function should be used
+       var $writeAttemptLog = FALSE;   // If the writelog() functions is called if a login-attempt has be tried without success
+       var $writeDevLog = FALSE;       // If the t3lib_div::devLog() function should be used
 
 
        /**
@@ -97,16 +85,27 @@ class tx_sv_authbase extends t3lib_svbase   {
                $this->writeDevLog       = $this->pObj->writeDevLog;
        }
 
-       /**
+       /**
         * Check the login data with the user record data for builtin login methods
         *
-        * @param       array           user data array
-        * @param       array           login data array
-        * @param       string          security_level
-        * @return      boolean         true if login data matched
+        * @param array $user user data array
+        * @param array $loginData login data array
+        * @param string $passwordCompareStrategy password compare strategy
+        * @return boolean TRUE if login data matched
         */
-       function compareUident($user, $loginData, $security_level='') {
-               return $this->pObj->compareUident($user, $loginData, $security_level);
+       function compareUident(array $user, array $loginData, $passwordCompareStrategy = '') {
+               if ($this->authInfo['loginType'] === 'BE') {
+                               // Challenge is only stored in session during BE login with the superchallenged login type.
+                               // In the frontend context the challenge is never stored in the session.
+                       if ($passwordCompareStrategy !== 'superchallenged') {
+                               $this->pObj->challengeStoredInCookie = FALSE;
+                       }
+                               // The TYPO3 standard login service relies on $passwordCompareStrategy being set
+                               // to 'superchallenged' because of the password in the database is stored as md5 hash
+                       $passwordCompareStrategy = 'superchallenged';
+               }
+
+               return $this->pObj->compareUident($user, $loginData, $passwordCompareStrategy);
        }
 
        /**
@@ -124,9 +123,9 @@ class tx_sv_authbase extends t3lib_svbase   {
         * @return      void
         * @see t3lib_userauthgroup::writelog()
         */
-       function writelog($type,$action,$error,$details_nr,$details,$data,$tablename='',$recuid='',$recpid='')  {
+       function writelog($type, $action, $error, $details_nr, $details, $data, $tablename='', $recuid='', $recpid='') {
                if($this->writeAttemptLog) {
-                       $this->pObj->writelog($type,$action,$error,$details_nr,$details,$data,$tablename,$recuid,$recpid);
+                       $this->pObj->writelog($type, $action, $error, $details_nr, $details, $data, $tablename, $recuid, $recpid);
                }
        }
 
@@ -151,9 +150,9 @@ class tx_sv_authbase extends t3lib_svbase   {
         * @param       string          user name
         * @param       string          additional WHERE clause: " AND ...
         * @param       array           User db table definition: $this->db_user
-        * @return      mixed           user array or false
+        * @return      mixed           user array or FALSE
         */
-       function fetchUserRecord($username, $extraWhere='', $dbUserSetup='')    {
+       function fetchUserRecord($username, $extraWhere='', $dbUserSetup='') {
 
                $dbUser = is_array($dbUserSetup) ? $dbUserSetup : $this->db_user;
                $user = $this->pObj->fetchUserRecord($dbUser, $username, $extraWhere);