C днем Годовщины Великой Октябрьской социалистической революции, форумчане!
(А вчера был Всемирный день мужчин).
Казалось бы стандартная функция Drupal, но и тут проблемы.
Пользователь регистрируется на сайте. Вводит логин, пароль. Но чтобы пользователь после регистрации стал активным требуется подтверждение администратора.
Администратор в его статусе выбирает "Активный", пользователю приходит письмо, но вместо пароля пользователю отсылается слово !password.
Как сделать чтобы после активации,пользователю отсылался пароль.
Комментарии
Видимо, ошибка в переводе. Задайте поиск по строкам перевода, указав в качестве паттерна кусок из текста письма, которое отправляется пользователю после регистрации. Скорее всего, там в тексте либо неправильный плейсхолдер (например, !password вместо password), либо допущена ошибка в самом плейсхолдере (где-то вкрались кириллические буквы, хотя должна быть латиница). В первом случае вы найдёте ошибку, сравнив английский текст и текст перевода. Во втором — сможете исправить, если точно наберёте текст латиницей.
Там прямо написано
"Допустимые переменные: !username, !site, !password, !uri, !uri_brief, !mailto, !date..."
И на английском и на русском эти переменные одинаковые.
!username посылается на почту как надо, а !password - нет
Если пользователя создает администратор, то пароль отсылается как надо. А если администратор активирует пользователя то нет...
Так там разные шаблоны для разных действий.
Так что после автивации пароль послать нельзя?
Если админ активирует юзера, то это означает, что юзер сам зарегистрировался, админ только подтверждает регистрацию. Включай логику
Речь идет не о том что делает администратор, а о том какие письма посылает Drupal. А можна переменную !password задать глобально, для всех писем исходящих с сайта, неважно по какой теме эти письма посланы, регистрации или активации.
Я тут трезво посмотрел, все таки переменная !password доступна и при активации пользователя. Там так и написано.
так а в чём заключалась проблема
Проблема в том что если
1) пользователь регистрируется на сайте
2) пользователя создает администратор
...пользователю приходит на почту пароль как надо.
3) пользователю изменяем статус на "активный"
...письмо приходит, но вместо пароля "!password"
Проблема есть. Задача у меня немного другая, но суть та же.
Нашлось и решение.
Суть проблемы лежит в ядре друпала в функции user_register_submit(). Там написано следующее:
$admin = user_access('administer users');
...
if (!variable_get('user_email_verification', TRUE) || $admin) {
$pass = $form_state['values']['pass'];
}
else {
$pass = user_password();
};
То есть если админ создает пользователя то пароль не генерится.
Решение. В своем модуле в form_alter я добавил к форме user_register валидатор, в котором делаю:
$form_state['values']['pass'] = user_password();
Можно немного по-другому. Но все же работает