Nutzerverwaltung
Nutzerkonten-Verwaltung, Rollen-Rechte, Authentifizierung, user-lifecycle, Einschreibemethoden
Authentifizierung
Matrikelnummer mit Shibboleth übertragen
Wird z.B. schacPersonalUniqueCode vom IdentityProvider als SCHAC-Attribut übertragen, kann man den Wert via Transform auf ServiceProvider-Seite für Moodle nutzbar extrahieren:
<AttributeResolver type="Transform" source="schacPersonalUniqueCode">
<Regex match="^urn:mace:terena\.org:schac:personalUniqueCode:de:beispieldomain\.de:Matrikelnummer:(.+)$" dest="matnum">$1</Regex>
</AttributeResolver>
"The Schema for Academia, SCHAC, aims to define and promote common schemas in the field of higher education to facilitate inter-institutional data exchange."
https://wiki.refeds.org/display/STAN/SCHAC+Releases
Die genaue Regexp im Transform-AttributeResolver hängt davon, wie das Attribut formatiert ist.
Der AttributeResolver ist ein Unterelement der ApplicationDefaults in der shibboleth2.xml des Service Providers.
Rollen und Rechte
In Rollen sind die Berechtigungen (capabilities) definiert. Diese können auf verschiedenen Ebenen vergeben werden.
Es ist zu unterscheiden zwischen globalen zugeordneten Rollen im kompletten Moodle-System ("Rollen zuweisen in System": /admin/roles/assign.php?contextid=1), wie z.B. admins oder Support, und kursspezifischen Rollen, wie z.B. Lehrende.
Die verfügbaren Rollen im System und deren Rechte (Capabilities) werden unter /admin/roles/manage.php definiert. Dort wird auch gesteuert, welche Rollenzuweisungen, -änderungen, -wechsel und -ansicht jeweils erlaubt sind.
Ausführliche Dokumentation in den Moodle Docs
Autor: Klaus Steitz, Technische Universität Darmstadt
Nutzerlisten-Import
Mit Import-Listen können Nutzer/innen neu erstellt oder in Kurse und Gruppen hinzugefügt werden.
Website-Administration > Nutzer/innen > Nutzerkonten > Nutzerliste hochladen ermöglicht, Nutzer/innen in einen oder mehrere Kurse mit unterschiedlichen Rollen oder Gruppen einzuschreiben, das Aktualisieren von Daten im Nutzerprofil oder das Erstellen, Deaktivieren und Löschen von Nutzerkonten (via Spalte "deleted").
Die Nutzerliste wird in Form einer Comma-separated values-Datei (CSV-Datei) hochgeladen. Diese Tabelle kann mit Excel/Calc erstellt werden und muss mindestens die folgenden Spalten enthalten:
| username | firstname | lastname |
Der Zeichensatz, mit dem Excel die Datei speichert, kann zu Problemen führen (v.a. bei Umlauten); daher die CSV-Datei am besten mit Notepad++ öffnen und ggf. die Zeichen auf Windows-1252 konvertieren – Einstellung in Notepad++ unter Encoding -> Character sets -> Western European -> Windows-1252
Für manuelle Accounts: Der Benutzername darf nur Kleinbuchstaben, Ziffern, das Minuszeichen '-', einen Unterstrich '_', einen Punkt '.' oder das '@'-Zeichen enthalten.
Liste aus bereits vorhandenen usern erstellen
Via "Nutzerverwaltung (Bulk)" können gewünschte Filter gesetzt und danach eine Liste exportiert werden. Dies ergibt eine korrekt formatierte Tabelle mit allen nötigen Daten.
Import vorhandener user in einen Kurs
Hier beispielhaft die Schritt-für-Schritt Vorgehensweise zum Hinzufügen bereits im System vorhandener user zu einem Kurs als Teilnehmende; hier werden neue user in den Rollen Lehrende und Assistenz in den Kurs "Lehrenden-Community" hinzugefügt:
- Unter Website-Administration > Nutzer/innen > Nutzerkonten > Nutzerverwaltung (Bulk) auf "Mehr anzeigen ..." klicken
- "Kurs-Rolle" auf "Lehrende" setzen und Button "Filter Hinzufügen" klicken
- "Mehr anzeigen ..." klicken, "Erster Zugriff ist nach" auf einen Tag vorm letzten Import (s.u.) setzen und Button "Filter Hinzufügen" klicken
- Button "Alle Hinzufügen" klicken rechts von "Auswahl bearbeiten"
- Checkbox vor "Kurs-Rolle ist "Lehrende"" setzen und Button "Ausgewählte Suche beenden" klicken
- "Mehr anzeigen ..." klicken, "Kurs-Rolle" auf "Assistenz" setzen und Button "Filter Hinzufügen" klicken
- Button "Alle Hinzufügen" klicken --> user der Rollen Lehrende und Assistenz werden addiert und dabei Duplikate durch Doppelrollen vermieden
- Ganz unten "Für ausgewählte Nutzer/innen … " klicken und "Download" auswählen --> .xlsx auswählen und Button "Herunterladen"
- Nutzerinnen.xlsx öffnen und alle Spalten bis auf folgende 5 löschen:
username email firstname lastname course1 - Für alle Zeilen der neue hinzugefügten Spalte "course1" diesen Wert setzen: Lehrenden-Community
- Als CSV (Trennzeichen-getrennt) speichern
- Mit Notepad++ öffnen und prüfen, dass keine falschen oder leeren Spalten mit ",," enthalten sind + ggf. Coding auf Windows-1252 umstellen, falls Umlautprobleme auftauchen (s.o.)
- Die csv-Datei hochladen unter Website-Administration > Nutzer/innen > Nutzerkonten > Nutzerliste hochladen und "Vorschau für Zeilen" auf 1000 stellen sowie "Encoding" auf "Windows-1252"
- Vorschau prüfen und unter Einstellungen "Upload Typ" auf "Nur vorhandene aktualisieren" und die anderen Werte auf "Nein" setzen
- Button "Nutzerliste hochladen" und Ausgabe überprüfen.
Ausführliche Dokumentation in den Moodle Docs
https://docs.moodle.org/de/Nutzerliste_hochladen
Autor: Klaus Steitz, Technische Universität Darmstadt
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
Inactive User Cleanup (tool_inactive_user_cleanup)
https://moodle.org/plugins/tool_inactive_user_cleanup
Es wird ein Scheduled Task erstellt, der 1x tgl. läuft und folgendes prüft:
- Days of inactivity: 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 - 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
LDAP server Sync Plus (auth_ldap_syncplus)
https://moodle.org/plugins/auth_ldap_syncplus
Automatic User Deletion (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
userwird 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
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
userTabelle - Eigene Subplugins möglich, z.B. um bestimmte User auszuschließen
Contra:
- Nur ein Subplugin möglich
- Es werden keine E-Mails an die User verschickt: https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/issues/29
- Offene Pull Requests: https://github.com/eLearning-TUDarmstadt/moodle-tool_cleanupusers/pulls
Autor*innen: Klaus Steitz (TU Darmstadt), Melanie Treitinger (Ruhr-Uni Bochum)