# user-lifecycle

Hier geht es um Aufräumstrategien für Accounts mit einer Übersicht von User-Lifecycle-Plugins.

User-Konten werden nicht automtisch aufgeräumt, wodurch sich über die Zeit viele inaktive Konten von Usern, die nicht mehr Hochschulangehörige sind, ansammeln können. Zum Aufräumen dieser Accounts nach bestimmten Regeln gibt es verschiedene Plugins, die z.B. prüfen, ob User noch im LDAP sind.

Hier ein grober Überblick von User-Lifecycle-Plugins:

## User Suspension (tool\_usersuspension)

[https://moodle.org/plugins/tool\_usersuspension](https://moodle.org/plugins/tool_usersuspension)

## Inactive User Cleanup (tool\_inactive\_user\_cleanup)

[https://moodle.org/plugins/tool\_inactive\_user\_cleanup](https://moodle.org/plugins/tool_inactive_user_cleanup)

Es wird ein <span style="text-decoration: underline;">Scheduled Task </span>erstellt, der 1x tgl. läuft und folgendes prüft:

- **Days of inactivit**y: Zeit seitdem sich der User das letzte Mal eingeloggt hat (`lastaccess`) → wenn zutreffend wird 
    - eine E-Mail verschickt und
    - der User in eine Tabelle eingetragen
- **Days before deletion**: Zeit zwischen Versenden der Mail und dem tatsächlichen Löschen

**Pro:**

- E-Mail über bevorstehende Löschung wird an User verschickt.

**Contra:**

- Fehlerhafte Programmierung an manchen Stellen (z.B. [https://github.com/dualcube/moodle-tool\_inactive\_user\_cleanup/issues/32](http://PHP%20Error) - noch nicht gefixt!)
- Programmierung etwas hacky (z.B. wird E-Mail an User in einer `if`-Bedingung verschickt )
- Keine Möglichkeit, bestimmte User auszuschließen

## Hard life cycle for self-signup users (tool\_selfsignuphardlifecycle)

[https://moodle.org/plugins/tool\_selfsignuphardlifecycle](https://moodle.org/plugins/tool_selfsignuphardlifecycle)

## LDAP server Sync Plus (auth\_ldap\_syncplus)

[https://moodle.org/plugins/auth\_ldap\_syncplus](https://moodle.org/plugins/auth_ldap_syncplus)

## Automatic User Deletion (tool\_userautodelete)

[https://github.com/ngandrass/moodle-tool\_userautodelete](https://github.com/ngandrass/moodle-tool_userautodelete)

**Features:**

- Automatische Löschung inaktiver Benutzerkonten
- Warn-E-Mails an Benutzer vor der Löschung
- DSGVO-konforme Löschung von Benutzerkonten
- Ignorieren von Benutzern mit bestimmten Rollen
- Ignorieren bestimmter Authentifizierungs-Plugins
- Testlaufmodus für die Konfiguration
- Hochgradig konfigurierbar (Lösch- und Warnschwellenwerte, E-Mail-Vorlagen, Aktivierung/Deaktivierung einzelner Funktionen usw.)
- Protokollierung von Löschvorgängen
- Automatisierte Tests und Unterstützung für alle aktiven Moodle-Versionen

**Pro:**

- Rollen und Auth-Methoden können ausgenommen werden
- E-Mail über bevorstehende Löschung wird an User verschickt
- Eintrag in Tabelle `user` wird anonymisiert
- Dry-run möglich
- Logging-Seite

**Contra:**

- Zweistufiger Prozess fehlt: zuerst Suspension, dann Löschung
- Nur eine E-Mail zur Warnung wird verschickt

## cleanupusers (tool\_cleanupusers)

[https://github.com/eLearning-TUDarmstadt/moodle-tool\_cleanupusers](https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers)

**Features:**

- "**Archiving**": die Nutzerdaten werden in einer Schatten-Tabelle gespeichert, so dass die Nutzerdaten bei Bedarf wiederhergestellt werden können (Tabelle `tool_cleanupusers_archive`).
- **Löschen** von Nutzeraccounts.
- **Reaktivieren** von Nutzern, wenn sie sich wieder eingeloggt haben, nachdem sie zum Löschen vorgemerkt wurden.
- **Manuelles Löschen** über eine Admin-Seite: `Site administration ► Users ► Clean up users ► General settings`
- **Automatisches Löschen** über einen Geplanten Task (daily scheduled task).
- **Suplugins**: das Plugin braucht mindestens ein Subplugin, das die Nutzeraccounts zurückgibt, die vom Task verarbeitet werden. Standardmäßig mitgeliefert wird das *timechecker* Subplugin, welches den letzten Zugriff eines Nutzers in Moodle prüft (*lastaccess*). Ebenfalls veröffentlicht ist ein LDAP-Checker Subplugin.

**Pro:**

- Speichert zu löschende User in einer Schatten-Tabelle
- Anonymisiert gelöschte User in der `user` Tabelle
- Eigene Subplugins möglich, z.B. [um bestimmte User auszuschließen](https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/issues/31)

**Contra:**

- [Nur ein Subplugin möglich](https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/issues/30)
- Es werden keine E-Mails an die User verschickt: [https://github.com/eLearning-TUDarmstadt/moodle-tool\_cleanupusers/issues/29](https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/issues/29)
- Offene Pull Requests: [https://github.com/eLearning-TUDarmstadt/moodle-tool\_cleanupusers/pulls](https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/pulls)

---

Autor\*innen: [Klaus Steitz](https://forum.moodle-an-hochschulen.de/user/view.php?id=44 "Profil im Vereins-Moodle") (TU Darmstadt), [Melanie Treitinger](https://forum.moodle-an-hochschulen.de/user/view.php?id=35 "Profil im Vereins-Moodle") (Ruhr-Uni Bochum)