Programmgesteuert, der sich als einen anderen Benutzer ausgibt, ohne dass sich der derzeit angemeldete Benutzer anmelden

drupal.stackexchange https://drupal.stackexchange.com/questions/315

  •  16-10-2019
  •  | 
  •  

Frage

Wie sollte ein Modul den Wert des Globalen ändern? $user, führen Sie seinen eigenen Code aus und stellen Sie den ursprünglichen Wert von wieder her $user Ohne dass der aktuelle Benutzer angemeldet wird, wenn ein Fehler auftritt?

War es hilfreich?

Lösung

Das Drupal_cron_run () Die Funktion gibt ein perfektes Beispiel für genau dies, da sie den aktuellen Benutzer in Anonym ändert, wenn der Cron ausgeführt wird, und dann nach Abschluss zurückschaltet.

// Prevent session information from being saved while doing funky stuff.
$original_session_state = drupal_save_session();
drupal_save_session(FALSE);

// Force the current user to anonymous to ensure consistent permissions on
// funky stuff runs.
$original_user = $GLOBALS['user'];
$GLOBALS['user'] = drupal_anonymous_user(); // Or use user_load() for a non-anonymous user.

// Do funky stuff here...

// Restore the user.
$GLOBALS['user'] = $original_user;
drupal_save_session($original_session_state);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit drupal.stackexchange
scroll top