Se faire passer pour un autre utilisateur sans dommages
Référence sur Drupal.org : 2 Juin 2009 – 03h47 - http://drupal.org/node/218104
Il y a une discussion pour déplacer cette fonctionnalité dans le core, pour que les développeurs puissent le faire sans risques : #287292: Add function to switch local user
Possibilités d’usurpation d’identité
Il y a plusieurs cas pour lesquels vous voudrez que votre code « usurpe » l’identité d’un autre utilisateur. C’est le cas lorsqu’une action d’utilisateur déclenche un autre processus. Si c’est autre processus doit être fait par un utilisateur différent, alors vous voudrez « usurper » l’identité de cet autre utilisateur.
Voici un exemple de code incorrect et risqué qui « usurpe » l’identité d’un autre utilisateur :
<?php
global $user;
$original_user = $user;
$user = user_load(array('uid' => 1));
// Take your action here where you pretend to be the user with UID = 1 (typically the admin user on a site)
// NOTE: - this is the unsafe part - if your code here fails, then the user suddenly has the permissions of UID 1!
$user = $original_user;
?>Le mode opératoire correct et sûr consiste à utiliser la fonction session_save_session() comme ci-dessous :
<?php
global $user;
$original_user = $user;
session_save_session(FALSE);
$user = user_load(array('uid' => 1));
// Take your action here where you pretend to be the user with UID = 1 (typically the admin user on a site)
// If your code fails, it's not a problem because the session will not be saved
$user = $original_user;
session_save_session(TRUE);
// From here on the $user is back to normal so it's OK for the session to be saved
?>
- Version imprimable
- 2395 lectures
-

Commentaires
Poster un nouveau commentaire