Как известно, при регистрации в Drupal можно выбрать несколько вариантов задания пароля. Один из вариантов подразумевает указания только email, после чего происходит генерация ссылки для первой авторизации и эта ссылка отправляется на почту. Пользователь заходит по этой ссылке на наш сайт и устанавливает пароль. При другом варианте, пароль можно вводить сразу во время регистрации. Но иногда может потребоваться, чтобы сразу после регистрации без указания пароля учетная запись активировалась, а сгенерированный пароль уходил на указанный во время регистрации email. Однажды, мне понадобился такой вариант при создании интернет-магазина на Drupal Commerce.

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

login

Причем и после первой и после второй процедуры пользователя нужно направлять на следующий этап оформления заказа уже авторизованным.

Первым модулем, который нам понадобится для этого — Commerce Checkout Redirect. Данный модуль возьмет на себе задачу отследить, что если пользователь не авторизован в момент оформления заказа его нужно направить на страницу /user/login. Но на этом его миссия не заканчивается, он «ждет» пользователя, пока тот войдет (используя свой логин и пароль) или зарегистрируется. После этого модуль отвечает за то, чтобы вернуть пользователя на следующий этап оформления заказа. Настроек у модуля нет; работает сразу после включения.

Следующее, что нам понадобится, это — генерация пароля. В этом нам поможет модуль под названием Generate Password. Данный модуль имеет настройки, как по сложности генерируемых паролей, так и по некоторым поведенческим факторам. После включения модуля на странице настроек учетной записи (/admin/config/people/accounts) станет доступно несколько параметров, определяющих каким образом будет вести себя модуль Generate Password.

Остался последний этап нашей задачи: отправить сгенерированный пароль на почту пользователя. Кстати говоря, модуль Generate Password может показывать пароль в поле сообщений сайта на странице после регистрации. Но нас это не устраивает. А как мы знаем за отправку писем с информацией о регистрации пользователей отвечает модуль, входящий в ядро Drupal. Там же на странице настроек учетной записи есть и шаблоны писем отправляемых пользователям. Шаблоны понимают токены. Вот теперь наша задача создать токен пароля, чтобы можно было использовать его в нашем шаблоне письма. С этой задачей справится модуль Registration Password Token от нашего соотечественника.