Benutzerdaten

Zugriff auf Benutzerdaten

Benutzerdaten werden in Stud.IP in einer Datenbank verwaltet. Hierbei werden Benutzer durch eine systemweit eindeutige Zeichenkette, die sogenannte user_id, identifiziert. Sie besteht aus 32 Zeichen (Zahlen und Buchstaben) und wird bei der Registrierung durch die PHP-Funktion uniqid zufällig erzeugt.

Grundlegende Tabellen der Datenbank

Im Folgenden werden die für die Benutzerverwaltung relevanten Teile der Datenbank im Detail erläutert. Es handelt sich hierbei um die Tabellen auth_user_md5 und user_info. Die Benutzerdaten wurden auf mehrere Tabellen verteilt, um das System leichter an neue Gegebenheiten anzupassen. Die Bedeutung dieser Tabellen erschließt sich im folgenden.

auth_user_md5

Die Tabelle auth_user_md5 beinhaltet unter anderem folgende Datenfelder jedes Benutzers:

  • user_id, welche hier als Primärschlüssel der Tabelle dient
  • username, der Name, mit dem sich ein Benutzer anmeldet
  • Vorname
  • Nachname
  • Email

Außerdem wird im Feld perms die Rechtestufe des Nutzers gespeichert.

user_info

Die Tabelle user_info enthält einen Großteil der persönlichen Daten eines Benutzers, welche über den Reiter Nutzerdaten auf der eigenen Homepage vom Benutzer selbst verändert werden können.

Felder dieser Tabelle sind beispielsweise:

  • geschlecht, wobei 1 für weiblich und 0 für männlich steht
  • score, enthält die StudIP-Punktzahl des Benutzers
  • title_front bzw. title_rear, welche den vor- bzw. nachgestellten Titel einer Person enthalten

Die StudIPUser-Klasse

Die Klasse StudIPUser dient dem einfachen und konsistenten Zugriff auf die Benutzerdaten aus den einzelnen Tabellen, so dass diese nicht explizit mit SQL-Selects abgefragt werden müssen. Sie sollte folglich verwendet werden, um mit dem eingeloggten Benutzer zu arbeiten, und bietet Zugriff auf die Daten aus der Tabelle auth_user_md5.

Nachfolgende Methoden stehen in dieser Klasse zur Verfügung:

  • getPermission, gibt ein Permission-Objekt zurück
  • getUserid
  • getUsername
  • getSurname
  • getGivenname, gibt den Vornamen zurück

Die Permission-Klasse

Ein Permission-Objekt wird automatisch vom StudIPUser-Objekt erzeugt und stellt einige Methoden zur Verfügung, über die sich die Berechtigungen von Benutzern überprüfen lassen.

Dazu gehören:

  • hasRootPermission
  • hasAdminPermission
  • hasTutorPermission
  • hasTeacherPermission
  • hasStudentPermission
  • isStudent

Diese Methoden liefern alle true oder false zurück. Anzumerken ist noch, dass hasStudentPermission nur überprüft, ob der Benutzer die Rechte eines Autors hat. isStudent dagegen überprüft zusätzlich noch, ob der Benutzer kein Dozent ist, da dieser ebenfalls die Rechte eines Autors hätte.

Zugriff auf diese Objekte

Wenn man die eigene Pluginklasse von der Klasse AbstractStudIPHomepagePlugin ableitet, hat man Zugriff auf die Objekte StudIPUser und Permission. Dies geschieht durch eine von der Oberklasse vererbte Methode getUser bzw. durch die Methode getPermission der Klasse StudIPUser.

class TestPlugin extends AbstractStudIPHomepagePlugin {
        private $user;
        private $permission;

        public function __construct() {
                parent::__construct();
                $this->user = $this->getUser();
                $this->permission = $this->user->getPermission();
        }

        public function test() {
                if ($this->permission->isStudent()) {
                        echo _("Ein Student mit dem Benutzernamen ");
                        echo $this->user->getUsername();
                }
        }
}

Zugriff auf andere Benutzerdaten

Um auf Daten anderer Benutzer zuzugreifen, wie sie zum Beispiel in der Tabelle user_info zu finden sind, wird die Klasse UserManagement benötigt. Diese erfordert im Konstruktor als Parameter die user_id des Benutzers, mit dem gearbeitet werden soll.

Wurde ein Objekt dieser Klasse erzeugt, ist es möglich, auf die Benutzerdaten über das assoziative Array $user_data zuzugreifen, welches die Daten aus den Tabellen auth_user_md5 und user_info enthält. Der Zugriff erfolgt über $user_data[’Tabellenname.Feldname’]. Um zum Beispiel den Benutzernamen aus der Tabelle auth_user_md5 abzufragen: $user_data[’auth_user_md5.username’].

Benutzerdaten lassen sich über die Methode changeUser($array) verändern, wobei $array ein assoziatives Array von der gleichen Form wie eben beschrieben sein muss.

Die user_id eines beliebigen Benutzers lässt sich über die Funktion get_userid($username) herausfinden.

Letzte Änderung am September 13, 2009, at 10:30 PM von eludwig.