Programmazione impersonare un altro utente senza provocare il momento utente connesso di disconnettersi

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

  •  16-10-2019
  •  | 
  •  

Domanda

Come dovrebbe cambiare il modulo del valore del $user globale, eseguire il proprio codice, e ripristinare il valore originale di $user senza causare l'utente corrente per effettuare il login se si verifica un errore?

È stato utile?

Soluzione

Il drupal_cron_run () funzione fornisce un esempio perfetto per esattamente questo, dal momento che cambia l'utente corrente di anonimo ogni volta che viene eseguito cron, poi ritorna dopo che è stato fatto.

// 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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a drupal.stackexchange
scroll top