Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.
Seiten: 1
#1 20. März 2019 11:33
- andrea
- hat von CMS/ms gehört
- Registriert: 03. Dezember 2014
- Beiträge: 12
FEU abgelaufene user automatisch löschen
Hallo
also ich habe eine Frage zum FrontendUser-Modul, ist es hier möglich Benutzer, nachdem diese abgelaufen sind automatisch zu löschen?
Wenn ja, dann wäre die nächste Frage wie?
Derzeit werden diese ja nur als abgelaufen markiert und der Benutzer müsste manuell entfernt werden, was jedoch nicht gewünscht wird.
Danke im Voraus und beste Grüße,
andrea
Offline
#2 24. März 2019 13:35
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.435
Re: FEU abgelaufene user automatisch löschen
Wenn FEU keine Option dafür bietet, gäbe es da evtl. noch die Ereignisverwaltung. Aber bevor ich da jetzt ins Detail gehe, von welcher Version reden wir denn hier?
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#3 27. März 2019 10:14
- andrea
- hat von CMS/ms gehört
- Registriert: 03. Dezember 2014
- Beiträge: 12
Re: FEU abgelaufene user automatisch löschen
es würde sich um die Version 2.12.6 vom FrontEndUser unter CMSMS 2.2.8 handeln, was vielleicht noch von Bedeutung sein könnte, die Installation läuft derzeit unter PHP 5.6, da wir hier Probleme mit einem anderen Modul haben
Offline
#4 08. April 2019 10:24
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.435
Re: FEU abgelaufene user automatisch löschen
Leider bietet das Modul keine Möglichkeit, sich beim Ablauf eines Users irgendwo "einzuklinken" um die Löschung selber automatisch vorzunehmen.
Was man aber evtl. versuchen könnte, wäre ein eigenes Script zu schreiben, welches regelmäßig ausgeführt wird. Das prüft dann in Intervallen, ob es abgelaufene Konten gibt und löscht diese.
Das könnte man vielleicht über den CMSJobManager lösen. Damit hab ich mich aber noch nicht beschäftigt. Hab auch noch keine brauchbare Dokumentation dazu gefunden.
Nach meinem bisherigen Verständnis sollte man eigene "Jobs" definieren können, die in einem bestimmten Intervall ausgeführt werden. D.h. man könnt z.B. einmal pro Woche prüfen/löschen.
(Sonntag Nacht z.B. - am besten immer dann, wenn so wenig wie möglich User online sind)
Je nachdem wie häufig es vorkommt, dass Userkonten ablaufen bzw. wie viel Wert man auf eine stets aktuelle Nutzerzahl legt.
Man könnte es evtl. auch mit einem Plugin im Template lösen, das würde aber dann bei jedem Seitenaufruf ausgeführt werden. Das wäre die einfachste aber nicht unbedingt performanteste Lösung.
CMSJobManager steht zumindest schonmal auf meiner ToDo-Liste ;-)
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
#5 08. April 2019 12:31
- NaN
- Moderator
- Ort: Halle (Saale)
- Registriert: 09. November 2010
- Beiträge: 4.435
Re: FEU abgelaufene user automatisch löschen
Ein Plugin könnte z.B. so aussehen:
<?php
function smarty_function_feu_delete_expired( $params , &$template )
{
# get FEU module
if(!$feusers = &cms_utils::get_module('FrontEndUsers'))
return;
#timespan in seconds (1 Month: 1h = 3600s ; 1d = 24h ; 31d = 1Month -> 3600 * 24 * 31)
$timespan = 3600 * 24 * 31;
#feusers api has no function to get expired users only
$db = cmsms()->GetDb();
$query = "SELECT id FROM " . cms_db_prefix() . "module_feusers_users WHERE expires < " . $db->DbTimeStamp( time() - $timespan );
$users = $db->GetArray( $query );
foreach( $users as $user )
$feusers->DeleteUserFull( $user['id'] );
}
?>
Unter "/assets/plugins/function.feu_delete_expired.php" (CMSms 2) bzw. "/plugins/function.feu_delete_expired.php" (CMSms 1.12) speichern und dann z.B. im FrontendUsers Login Template ganz unten so aufrufen:
{feu_delete_expired}
Somit wird es nur dann ausgeführt, wenn auch das Login-Formular angezeigt wird.
Oder man kopiert sich den Code (ohne "function") und macht daraus einen UDT, den man dann selber in eigenen Intervallen im Backend ausführen kann.
EDIT:
Wenn man bei "$db->DbTimeStamp( time() )" ein bischen rechnet, kann man auch nur solche User löschen, die erst seit einer bestimmten Zeitdauer abgelaufen sind. In diesem Beispiel seit einem Monat.
Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)
Offline
Seiten: 1