2016-05-27 8 views
0

Ich habe eine api bekam die joomla Benutzer authentifizieren, Passwort. Obwohl es perfekt in Joomla 2.5 funktioniert, es wird geben Anwendung Instanziierung Fehler in Joomla 3.5. Der Teil des Codes ist wie folgt:Joomla JAuthentication geben Anwendung Instanziierung Fehler

Funktion checkAuthentication ($ username, $ password) {

jimport('joomla.user.authentication'); 
$auth = & JAuthentication::getInstance(); 
$credentials = array('username' => $username, 'password' => $password); 
$options = array(); 
$response = $auth->authenticate($credentials, $options); 

if ($response->status != JAUTHENTICATE_STATUS_SUCCESS) 
{ 
    echo "Failure"; 
} 
else 
{ 
    echo "Success~" . $username; 
} 

}

Es befindet sich auf der Linie $ auth andernfalls = & JAuthentication :: getInstance();

Ich habe alle Konfiguration wie db-Einstellungen usw. in der Konfigurationsdatei überprüft. Kann mir bitte jemand helfen, den Grund herauszufinden.

Antwort

1

Der Code unten sollte es tun - es ist eine modifizierte Version des Joomla-Authentifizierungs-Plug (Plug-in/Authentifizierung/joomla/joomla.php).

$query = $db->getQuery(true); 
$query->select(array('id, 'password')); 
$query->from('#__users'); 
$query->where($db->quoteName('username') . ' = ' . $db->quote($username)); 
$db->setQuery($query); 
$result = $db->loadObject(); 

/* 
* This block supports Joomla 3.2 upwards 
*/ 
if ($result) 
{ 
    $match = JUserHelper::verifyPassword($password, $result->password, $result->id); 

    if ($match === true) 
    { 
     $user = JUser::getInstance($result->id); 
     $response->email = $user->email; 
     $response->fullname = $user->name; 

     if (JFactory::getApplication()->isAdmin()) 
     { 
      $response->language = $user->getParam('admin_language'); 
     } 
     else 
     { 
      $response->language = $user->getParam('language'); 
     } 

     $response->status = JAuthentication::STATUS_SUCCESS; 
     $response->error_message = ''; 
    } 
    else 
    { 
     // Invalid password 
     $response->status = JAuthentication::STATUS_FAILURE; 
     $response->error_message = JText::_('JGLOBAL_AUTH_INVALID_PASS'); 
    } 
} 
+0

Vielen Dank Sean! Es hat perfekt funktioniert. –