it-swarm.com.de

com_ajax und JFactory :: getUser ()

Ich verwende com_ajax für Anfragen und bin auf ein Problem gestoßen.

Ich versuche festzustellen, ob der Benutzer, der eine AJAX) -Anforderung stellt, angemeldet ist. Wenn ich JFactory :: getUser () aufrufe, wird ein Gastbenutzer mit der ID = 0 zurückgegeben isAdmin () gibt false zurück. Ich vermute, das liegt daran, dass com_ajax auf der Site-Seite und nicht auf der Administrator-Seite liegt.

Gibt es eine Möglichkeit, com_ajax zu verwenden und zu unterscheiden, ob jemand authentifiziert ist? Gibt es alternativ eine Entsprechung zu com_ajax auf der Administratorseite? Muss ich mein eigenes Ajax für eine Verwaltungskomponente schreiben?

2
George Sexton

Unter der Annahme, dass Sie die richtigen Namenskonventionen für Ihre Ajax-Aufgabe in der URL und in der Funktion PHP) verwenden, sollten Sie ungefähr Folgendes haben:

helper.php

public static function myFunctionAjax()
{

}

Javascript-Datei

var request = {
    'option' : 'com_ajax',
    'module' : 'mymodule',
    'method' : 'myFunction',
    'format' : 'raw'
};

$.ajax({
    type: 'POST',
    data: request,
    success: function(response) {
        // etc
    }
});

myFunction muss denselben Namen wie die auszuführende PHP Funktion (myFunctionAjax()) verwenden.

Der einzige Unterschied ist, dass PHP function am Ende Ajax benötigt.

Dann können Sie in Ihrer PHP Funktion prüfen, ob der Benutzer eingeloggt ist, wie folgt:

public static function myFunctionAjax()
{
    $user = JFactory::getUser();

    if (!$user->guest)
    {
        // perform some magic
    }
    else
    {
        // Sorry, you must be logged in
    }
}
2
Lodder