Пример #1
0
 /**
  * static public function for load user from login e password
  * @param string $login login of the user
  * @param string $password password of the user in clear text
  * @param string $prefix optional prefix for session publiciables
  * @return mixed DoceboUser instance of logged in user if success in login
  *				 FALSE otherwise
  **/
 public static function &createDoceboUserFromLogin($login, $password, $prefix = 'base', $new_lang = false)
 {
     if ($login == '') {
         $false_public = FALSE;
         return $false_public;
     }
     $user_manager = new DoceboACLManager();
     $user_info = $user_manager->getUser(false, $login);
     // first login
     $ret_value = false;
     if ($user_info === false) {
         return $ret_value;
     }
     if ($user_info[ACL_INFO_VALID] != '1') {
         return $ret_value;
     }
     if (Get::sett('ldap_used') == 'on') {
         if ($password == '') {
             $false_public = FALSE;
             return $false_public;
         }
         //connect to ldap server
         if (!($ldap_conn = @ldap_connect(Get::sett('ldap_server'), Get::sett('ldap_port', '389')))) {
             die("Could not connect to ldap server");
         }
         //bind on server
         $ldap_user = ereg_replace('\\$user', $login, Get::sett('ldap_user_string'));
         if (!@ldap_bind($ldap_conn, $ldap_user, $password)) {
             ldap_close($ldap_conn);
             // Edited by Claudio Redaelli
             if (Get::sett('ldap_alternate_check') == 'on') {
                 if ($user_info[ACL_INFO_PASS] != $user_manager->encrypt($password)) {
                     return $ret_value;
                 }
             } else {
                 $false_public = FALSE;
                 return $false_public;
             }
             // End edit
         }
         ldap_close($ldap_conn);
     } elseif ($user_info[ACL_INFO_PASS] != $user_manager->encrypt($password)) {
         return $ret_value;
     }
     unset($_SESSION[$prefix . "_idst"]);
     $du = new DoceboUser($login, $prefix);
     $_SESSION['last_enter'] = $user_info[ACL_INFO_LASTENTER];
     $du->setLastEnter(date("Y-m-d H:i:s"));
     $_SESSION['user_enter_mark'] = time();
     // language policy
     if (!$new_lang && isset($_SESSION['forced_lang'])) {
         $new_lang = Lang::get();
     }
     if ($new_lang != false) {
         $du->preference->setLanguage($new_lang);
     } else {
         if (!Get::cfg('demo_mode', false)) {
             Lang::set($du->preference->getLanguage());
         }
     }
     if (function_exists('session_regenerate_id')) {
         session_regenerate_id();
     }
     return $du;
 }