Помогите не трогать ядро Drupal - расширенная авторизация [решено]

Главные вкладки

Аватар пользователя Yegor Yegor 26 июня 2009 в 8:27

Доброго времени суток, мне нужно расширить модуль User, в котором находятся функции авторизации пользователей. Так как мне нужно проверять пользователей при авторизации не только с БД Друпала, а так же посредством SOAP-соединения на другом сайте. Таким образом, после того как на друпале определен пользователь, мы отправляем данные на другой сайт, после подтверждения продолжаем авторизацию. Я реализовал данный функционал, только на ядре - так как задача была срочная. Подскажите как решить этот вопрос иначе.

Комментарии

Аватар пользователя Loasty Loasty 26 июня 2009 в 10:57

"Yegor" wrote:
Необходимые изменения и были произведены в load_user и save_user, но я думаю, что это не лучшее решение.

Сделайте в отдельном модуле через hook_user. Там есть все event'ы включая load и save

Аватар пользователя Yegor Yegor 26 июня 2009 в 13:54

Допустим, создаю я модуль mymodule, получается что внутри mymodule.module долна лежать основная функция mymodule_user, которая будет принимать параметр $type хука и в зависимости от того какой будет этот параметр (предположительно "load" или "save", в моем случае) буду направлять действие на функцию. Я правильно все понимаю?

Но после перенаправления на функцию мне нужно будет держать контроль над процессом аутентификации (получать имя пользователя и пароль, при необходимости прекращать процедуру или продолжать), как я смогу это сделать из другой функции - созданной мной?

Аватар пользователя Yegor Yegor 27 июня 2009 в 11:41

Значится регистрацию и авторизацию я сделал, только теперь возник иной вопрос. Мне теперь нужно запретить изменять в настройках пользователя пароль и e-mail, так как нельзя политикой безопасности менять их на другом сервере, да и средств нет, которые бы позволили поменять.

Как я понимаю, мне в hook_user нужно поймать событие "form" (выводится форма для изменения данных) и там уже видоизменить вывод формы. Каким образом можно это сделать?

PS. Я на друпале недавно, поэтому рад буду лояльности, расширенным ответам и ссылкам на полезные материалы.

Аватар пользователя PanDa777 PanDa777 27 июня 2009 в 14:36

[ru-api=hook_form_FORM_ID_alter]hook_form_FORM_ID_alter[/ru-api]
Полагаю, Form Id --- что-то вроде user-edit. Посмотрите в коде странички --- там в теге form есть id.

Аватар пользователя Yegor Yegor 29 июня 2009 в 9:54

Решил задачу с ограничением изменения информации в профиле с помощью модуля user_readonly, всем спасибо.