Programación hacerse pasar por otro usuario sin causar haya iniciado la sesión en el usuario que se conecte a cabo

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

  •  16-10-2019
  •  | 
  •  

Pregunta

¿Cómo debe un cambio de módulo, el valor de la $user mundial, ejecutar su propio código, y restaurar el valor original de $user sin hacer que el usuario actual que se registra si ocurre un error?

¿Fue útil?

Solución

El drupal_cron_run () función da un ejemplo perfecto para exactamente esto, ya que cambia el usuario actual al anónimo cada vez que se ejecuta cron, a continuación, cambia de nuevo después de que se hace.

// 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);
Licenciado bajo: CC-BY-SA con atribución
No afiliado a drupal.stackexchange
scroll top