Voilà, voilà... Fin de l'aventure...

 

Fermeture de kolossaldrupal.org dans...


Bonjour tout le monde,

Drupal évolue, les versions changent et Kolossaldrupal.org était essentiellement consacré à la version 6 de Drupal.

Autant dire que les infos présentées ici commencent à dater...

Faute de temps, je ne peux plus garder le site Kolossaldrupal à jour...

Je vous aurais bien proposé de reprendre le flambeau mais... c'est tellement simple de nos jours de se faire son propre site à soi...Pourquoi s'embêter alors ? :-)

Ce site restera donc en l'état, tel qu'il était en 2011...

Ah la la ! Cela ne nous rajeunit pas !

Manuel Vila - Avril 2016

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
?>