Рассмотрим такую несложную задачу администрирования как вход под именем другого пользователя в drupal.
Иногда требуется взглянуть на сайт «глазами» конкретного пользователя. Но нам как администратору сайта не хотелось бы узнавать пароль пользователя, а также прибегать к разного рода техникам «взлома» (вроде подмены хеша пароля в базе данных, пусть даже на время).
Чтобы сделать все «красиво», добавим в какой то свой модуль пару хуков и код странички с формой авторизации. В результате, мы сможем выдавать право авторизации под любой учеткой для какой то из ролей сайта.
Я свой модуль обозвал как «shra_contribution», потому мой код выглядит так:
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44  | 
						function shra_contribution_menu() {     //вход под другим юзером добавим в админ меню     $items['admin/user/login-as'] = array(         'title' => 'Войти как...',         'page callback' => '_shra_contribution_login',         //право доступа есть только у ролей с вот таким разрешением         'access arguments' => array('login as'),         'type' => MENU_NORMAL_ITEM,     ); } //хук для объявления разрешения function shra_contribution_perm() {     return array('login as'); } /* реализация странички войти как ... */ function _shra_contribution_login() {     global $user;     //обработка данных формы     if (!empty($_POST['sbm']) && !empty($_POST['login'])) {         //определим USER ID по имени         $uid = db_result(db_query("SELECT uid FROM users WHERE name = '%s'",              trim($_POST['login'])));         if ($uid) {             //авторизация              $account = user_load(array('uid' => $uid));             $user = $account;             sess_regenerate();             $edit = $_POST;             user_module_invoke('login', $edit, $user);             //идем на главную страницу             drupal_goto('<front>');         }     }     //форма авторизации - тут всего одно поле:     /имя пользователя     return '     <form method="POST">         Имя пользователя:          <input type="text" name="login" value="" />         <input type="submit" name="sbm" value="Войти" />     </form>'; }  | 
					
Сама авторизация, как вы видите, занимает не более 10 строк. Код актуален для 6-й версии drupal. А форма авторизации выглядит так:



Интересное решение. А если подобный хук для D7?