se faisant passer pour un autre utilisateur sans programmation provoquant l'utilisateur connecté actuellement déconnecter

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

  •  16-10-2019
  •  | 
  •  

Question

Comment un changement de module, la valeur de la $user globale, exécuter son propre code, et restaurer la valeur d'origine de $user sans que l'utilisateur en cours d'être enregistré si une erreur se produit?

Était-ce utile?

La solution

Le drupal_cron_run () fonction donne un exemple parfait pour exactement cela, car il change l'utilisateur actuel à chaque fois anonyme cron est exécuté, puis revient après son fait.

// 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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à drupal.stackexchange
scroll top