public function isAuthenticated($request)
 {
     if (Security::isAuthenticated()) {
         return true;
     }
     // Token kann im Header oder in einem Parameter stehen
     $token = 'XYZ';
     if (isset($_SERVER['HTTP_X_TOKEN'])) {
         $token = $_SERVER['HTTP_X_TOKEN'];
     } elseif (isset($request->token)) {
         $token = $request->token;
     }
     $user = User::loadByToken($token);
     if ($user !== null) {
         Security::loginUser($user);
         return true;
     } else {
         return false;
     }
 }
 /**
  * Wechselt die Identität des angemeldeten Benutzers
  * ACHTUNG! Besondere Sorgfalt bei der Berechtigungsprüfung von Nöten!
  */
 public function doAnmeldenAls()
 {
     // TODO: Berechtigung prüfen
     // TODO: DTV!
     $darfWechsel = Application::isAdmin() || Security::hatRolle('DTV-GS');
     if (!$darfWechsel) {
         FlashMessage::danger('Für diese Aktion haben Sie keine Berechtigung');
         Application::getCurrentResponse()->redirectToFrontpage();
     }
     $this->user = User::loadByBenutzername($this->request->benutzer);
     if ($this->user != null) {
         Security::loginUser($this->user);
         FlashMessage::success('Sie sind jetzt angemeldet als ' . $this->user);
     } else {
         FlashMessage::danger('Benutzername nicht bekannt');
     }
     Application::getCurrentResponse()->redirectToFrontpage();
 }