Inaktiver eingeloggter Frontenduser??

Gesperrt
beloved_behated
Beiträge: 55
Registriert: Mi 25. Nov 2009, 16:08
Kontaktdaten:

Inaktiver eingeloggter Frontenduser??

Beitrag von beloved_behated »

Hallo,

mir ist aufgefallen, dass ein eingeloggter Frontenduser nachdem man ihn inaktiv gesetzt hat, im Backend weiterhin eingeloggt bleibt.
Kann man dies irgendwie beeheben, sodass der User ausgeloggt wird?
Ob der User dazu berechtigt ist im geschützten Bereich zu sein, müsste ja dann bei jedem Seitenaufruf überprüft werden....
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von Oldperl »

beloved_behated hat geschrieben:...dass ein eingeloggter Frontenduser nachdem man ihn inaktiv gesetzt hat, im Backend weiterhin eingeloggt bleibt.
Was genau meinst du damit?
Ein FE-User ist eigentlich garnicht im BE eingeloggt.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
beloved_behated
Beiträge: 55
Registriert: Mi 25. Nov 2009, 16:08
Kontaktdaten:

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von beloved_behated »

Sry....das Komma war falsch gesetzt. Ich meinte wenn man den Frontenduser im Backend inaktiv setzt, bleibt er im Frontend dennoch eingeloggt.
Oldperl
Beiträge: 4316
Registriert: Do 30. Jun 2005, 22:56
Wohnort: Eltmann, Unterfranken, Bayern
Hat sich bedankt: 6 Mal
Danksagung erhalten: 4 Mal
Kontaktdaten:

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von Oldperl »

Stimmt insoweit, das er nicht direkt rausgeschmissen wird, sondern erst beim nächsten Login nicht mehr rein kommt.
Um dieses Verhalten zu ändern müßte man die Session des Users kicken, bzw. müßte bei jedem Zugriff des FE-Users auf diese Freigabe geprüft werden. Das ist so nicht integriert soviel mir bekannt ist. Session kicken geht auch nur, wenn diese bekannt ist. Wenn man die DB zur Sessionverwaltung nutzt, kein Problem, wie das sich mit über PHP verwalteten Sessions verhält, und ob man da auf die dem User zugeordnete Session ran kommt müßte man sich erst anschauen.

Um dieses Verhalten zu bekommen könnte man evtl. auch eine Chain bauen, die im geschützten FE prüft, ob der angemeldete User "noch" freigeschaltet ist.

Gruß aus Franken

Ortwin
ConLite 3.0.0-dev, alternatives und stabiles Update von Contenido 4.8.x unter PHP 8.x - Download und Repo auf Gitport.de
phpBO Search Advanced - das Suchwort-Plugin für CONTENIDO 4.9
Mein Entwickler-Blog
beloved_behated
Beiträge: 55
Registriert: Mi 25. Nov 2009, 16:08
Kontaktdaten:

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von beloved_behated »

VIELEN DANK FÜR DEINE HILFE! Das hab ich mir auch schon gedacht.
Muss mir nochmal überlegen, ob sich der Aufwand lohnt.
Spider IT
Beiträge: 1416
Registriert: Fr 3. Dez 2004, 10:15

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von Spider IT »

Hallo,

vielleicht hilft das hier:

Code: Alles auswählen

<?php
if ($auth->auth['uid'] != 'nobody') {
    $oFrontendUsers = new FrontendUserCollection;
    $oFrontendUsers->setWhere('idclient', $client);
    $oFrontendUsers->setWhere('username', $sLogin);
    $oFrontendUsers->query();
    if ($frontenduser = $oFrontendUsers->next()) {
        if ($frontenduser->get('active') != 1) {
            # Redirect auf aktuelle Seite mit Logout
            header('location: ' . $sess->url('front_content.php?idcat=' . $idcat . '&idart=' . $idart . '&logout=yes'));
        }
    }
}
?>
Einfach im Output-Bereich eines neuen Moduls packen und im Template mit einbauen.
Das Modul hat keine Ausgabe, leitet aber per Abmelde-Link auf die gleiche Seite zurück wenn der User deaktiviert wurde.
Der Redirect muss sein, da es sein kann, dass bereits geschützte Inhalte ausgegeben wurden.

Achtung!
Der Code wurde nicht getestet.
Möglicherweise passt die Zeile 8 (...get('active')...) nicht.

Gruß
René
Dodger77
Beiträge: 3626
Registriert: Di 12. Okt 2004, 20:00
Wohnort: Voerde (Niederrhein)
Kontaktdaten:

Re: Inaktiver eingeloggter Frontenduser??

Beitrag von Dodger77 »

In Anlehnung an Renés Code könnte man auch das hier probieren:

Code: Alles auswählen

<?php
if ($auth->auth['uid'] != 'nobody') {
    $oFrontendUsers = new FrontendUserCollection;
    $oFrontendUsers->setWhere('idclient', $client);
    $oFrontendUsers->setWhere('username', $auth->auth['uname']);
    $oFrontendUsers->query();
    if ($frontenduser = $oFrontendUsers->next()) {
        if ($frontenduser->get('active') != 1) {
            # Redirect auf aktuelle Seite mit Logout
            $auth->logout();
        }
    }
}
?>
Gesperrt