setQuery( $query ); if(!$result = $database->query()) { echo $database->stderr(); return; } $rows = $database->loadObjectList(); $array_cfg = array(); foreach ($rows as $row ) { $array_cfg[$row->name] = $row->value; } Return $array_cfg; } function sqlauth_auth($username, $password) { global $mosConfig_absolute_path; $config = sqlauth_get_config(); global $mosConfig_absolute_path; $db = new database($config['sqlauth_dbhost'], $config['sqlauth_user'], $config['sqlauth_password'], $config['sqlauth_dbname']); $sql = stripslashes($config['sqlauth_getuserinfo']); $sql = str_replace('%{user}', addslashes($username),$sql); $sql = str_replace('%{pass}', addslashes($password),$sql); $db->setQuery( $sql ); if ($db->loadObject( $row )) { Return $row; } else { Return false; } } function sqlauth_login( $username=null,$passwd=null, $remember=null ) { global $acl, $mosConfig_absolute_path, $database , $mainframe, $my; global $_VERSION, $_COOKIE,$_POST; // if no username and password passed from function, then function is being called from login module/component if (!$username || !$passwd) { $username = strval( mosGetParam( $_POST, 'username', '' ) ); $password = mosGetParam( $_POST, 'passwd', '' ); $passwd = md5( $password ); $bypost = 1; // extra check to ensure that Joomla! sessioncookie exists if (!$mainframe->_session->session_id) { mosErrorAlert( _ALERT_ENABLED ); return; } josSpoofCheck(NULL,1); } if (!$username || !$passwd) { mosErrorAlert( _LOGIN_INCOMPLETE ); exit(); } else { $row = null; if ( $remember && strlen($username) == 32 && strlen($passwd) == 32 && $userid ) { // query used for remember me cookie $harden = mosHash( @$_SERVER['HTTP_USER_AGENT'] ); $query = "SELECT id, name, username, password, usertype, block, gid" . "\n FROM #__users" . "\n WHERE id = " . (int) $userid ; $database->setQuery( $query ); $database->loadObject($user); $check_username = md5( $user->username . $harden ); $check_password = md5( $user->password . $harden ); if ( $check_username == $username && $check_password == $passwd ) { $row = $user; } } else { // query used for login via login module $query = "SELECT id, name, username, password, usertype, block, gid" . "\n FROM #__users" . "\n WHERE username = ". $database->Quote( $username ) . "\n AND password = ". $database->Quote( $passwd ) ; $database->setQuery( $query ); $database->loadObject( $row ); } if (is_object( $row )) { // user blocked from login if ($row->block == 1) { mosErrorAlert(_LOGIN_BLOCKED); } // fudge the group stuff $grp = $acl->getAroGroup( $row->id ); $row->gid = 1; if ($acl->is_group_child_of( $grp->name, 'Registered', 'ARO' ) || $acl->is_group_child_of( $grp->name, 'Public Backend', 'ARO' )) { // fudge Authors, Editors, Publishers and Super Administrators into the Special Group $row->gid = 2; } $row->usertype = $grp->name; // initialize session data $session =& $mainframe->_session; $session->guest = 0; $session->username = $row->username; $session->userid = intval( $row->id ); $session->usertype = $row->usertype; $session->gid = intval( $row->gid ); $session->update(); // update user visit data $currentDate = date("Y-m-d\TH:i:s"); $query = "UPDATE #__users" . "\n SET lastvisitDate = ". $database->Quote( $currentDate ) . "\n WHERE id = " . (int) $session->userid ; $database->setQuery($query); if (!$database->query()) { die($database->stderr(true)); } // set remember me cookie if selected $remember = strval( mosGetParam( $_POST, 'remember', '' ) ); if ( $remember == 'yes' ) { // cookie lifetime of 365 days $lifetime = time() + 365*24*60*60; $remCookieName = mosMainFrame::remCookieName_User(); $remCookieValue = mosMainFrame::remCookieValue_User( $row->username ) . mosMainFrame::remCookieValue_Pass( $row->password ) . $row->id; setcookie( $remCookieName, $remCookieValue, $lifetime, '/' ); } mosCache::cleanCache(); } elseif ( $sqlauth_user = sqlauth_auth($username, $password) ) { //authorized user. // check if the username is already joomlized :-) $query = "SELECT *" . "\n FROM #__users" . "\n WHERE username = '$username'" ; $database->setQuery( $query ); $row = null; if ($database->loadObject( $userObject )) { $row = new mosUser( $database ); foreach( $userObject as $key=>$val) { $row->$key = $val; } $row->password = md5( $password ); } else { $row = new mosUser( $database ); $row->id = 0; $row->usertype = ''; $row->gid = $acl->get_group_id( 'Registered', 'ARO' ); $row->name = $sqlauth_user->name; $row->username = $sqlauth_user->username; $row->email = $sqlauth_user->email; $row->password = md5( $password ); $row->registerDate = date('Y-m-d H:i:s'); } if (!$row->store()) { echo "\n"; exit(); } //back to joomla login $mainframe->login($username, $passwd); } else { if (isset($bypost)) { mosErrorAlert(_LOGIN_INCORRECT); } else { $mainframe->logout(); mosRedirect('index.php'); } exit(); } } } global $mosConfig_debug, $mosConfig_lang, $option, $task; switch( $task ) { case "login": sqlauth_login(); break; } //exit(); // JS Popup message if ( $message ) { ?>