Backend-Login im Frontend prüfen
Quell-ID: GitHub Discussion #2
Use Case
Im Frontend soll geprüft werden, ob der aktuelle Besucher im REDAXO-Backend angemeldet ist, um beispielsweise einen Redirect durchzuführen oder geschützte Inhalte anzuzeigen.
Verwendete AddOns
- REDAXO Core
Zielbeschreibung
Es soll zuverlässig ermittelt werden können, ob und als welcher Benutzer jemand im Backend eingeloggt ist.
Lösung
Nur prüfen, ob jemand eingeloggt ist
if (rex_backend_login::hasSession()) {
// Besucher ist im Backend eingeloggt
}
Diese Methode ist besonders effektiv und schnell.
Prüfen, wer eingeloggt ist (inkl. Admin-Prüfung)
$user = rex_backend_login::createUser();
if ($user) {
// Benutzer ist eingeloggt
if ($user->isAdmin()) {
// Benutzer ist Admin
}
}
Die Methode createUser() erzeugt das User-Objekt, falls es noch nicht besteht. Im Frontend wird es nicht automatisch erstellt. Die hasSession()-Methode muss nicht zusätzlich aufgerufen werden – sie wird intern von createUser() bereits geprüft.
Wichtiger Hinweis
rex::getUser() funktioniert nur zuverlässig, wenn vorher irgendwo rex_backend_login::createUser() aufgerufen wurde. Im Frontend kann man sich daher nicht auf rex::getUser() verlassen, außer man hat selbst vorher createUser() aufgerufen.
Besserer Ansatz
// Empfohlene Prüfung im Frontend
if (rex_backend_login::hasSession()) {
$user = rex_backend_login::createUser();
if ($user && $user->isAdmin()) {
// Admin-spezifische Funktionen
}
}
Vollständiges Beispiel für einen Redirect
// Im Template oder Modul
if (!rex_backend_login::hasSession()) {
header('Location: /login');
exit;
}
Diese Methode ist der zuverlässigste Weg, den Backend-Login-Status im Frontend zu prüfen.