Прикручиваем OpenID к друпалу версии 5.х
- OpenID — это открытая децентрализованная система единого входа, которая позволяет использовать один логин и пароль на большом количестве сайтов. Подробности на openid.net
Для интеграции OpenID в друпал существует замечательный модуль openid.
Однако после активации этого модуля вас ждет неприятный сюрприз — по-умолчанию пользователю предлагается пройти стандартную для друпала авторизацию\регистрацию, а openid-вход является лишь альтернативным способом, выбрать который пользователь может нажав на ссылку рядом с блоком входа в систему.
Исправить ситуацию можно двумя способами — сделав OpenID для друпала единственной дверью в ваш сайт, либо просто предпочтительной, но не убирая стандартную регистрацию.
- Необходимо добавить следующий код в template.php-файл вашей темы:
// заменяем форму входа /user
function phptemplate_user_login($form) { return _phptemplate_callback('user_login', array('form' => $form)); }<br><br> // заменяем форму регистрации /user/register function phptemplate_user_register($form) { return _phptemplate_callback('user_register', array('form' => $form)); }<br> // заменяем форму восстановления забытого пароля /user/password function phptemplate_user_pass($form) { return _phptemplate_callback('user_pass', array('form' => $form)); } // заменяем блок входа в систему function phptemplate_user_login_block($form) { // show hint in form element $form['openid_url']['#value'] = 'OpenID Login'; // remove hint in form element on focus $form['openid_url']['#attributes'] = array('onfocus' => "javascript:openid_url.value=''"); return _phptemplate_callback('user_login_block', array('form' => $form)); }
- Создаем файл "user_register.tpl.php" и кидаем в папке темы.
Содержимое файла:
drupal_add_js('$(document).ready(function(){$("#edit-openid-url-wrapper").show();$("#edit-name-wrapper").hide();$("#edit-pass-wrapper").hide();$("a.openid-link").hide();$("a.user-link").show();});', 'inline'); print(drupal_render($form));
- Создаем файл "user_login.tpl.php" и кидаем в папке темы.
Содержимое файла:
Establish your OpenID at openid.net - Создаем файл "user_pass.tpl.php" и кидаем в папке темы.
Содержимое файла:
Visit your OpenID provider to recover your password. -
Создаем файл "user_login_block.tpl.php" и кидаем в папке темы.
Содержимое файла:
drupal_add_js('$(document).ready(function(){$("#edit-openid-url-wrapper").show();$("#edit-name-wrapper").hide();$("#edit-pass-wrapper").hide ();$("a.openid-link").hide();$("a.user-link").show();});', 'inline');<br> print(drupal_render($form['form_id'])); print(drupal_render($form['openid_url'])); print(drupal_render($form['submit']));
В данном случае необходимо омыть руки кровью стандартного модуля друпала user.module
Поехали?
Первым делом ищем в user.module функию user_login_block() и добавляем строку '#type' => 'hidden', в элементы $form['name'], $form['pass'], $form['submit'].
Теперь, чуть ниже исправленного текста, необходимо найти строки:
$items[] = l(t('Create new account'), 'user/register', array('title' => t('Create a new user account.'))); $items[] = l(t('Request new password'), 'user/password', array('title' => t('Request new password via e-mail.')));
Эти строки надо закомментировать, т.е. поставить перед каждой из них по два слеша — //
Мы просто скрыли стандартную форму входа на сайт, оставив OpenID-вход, не уходя с головой в редактирование модулей.
- Категории:
- 149 просмотров
Комментарии
Добавить комментарий