Плагин Acegi не поддерживает это "из коробки", но если вы добавите плагин email-подтверждение , вы легко сможете развернуть свой собственный.
Вот шаги:
Создайте форму для сброса пароля, в которой пользователю предлагается ввести свой адрес электронной почты и новый пароль.
Действие контроллера, которое обрабатывает форму сброса пароля, должно проверить данные и
Используйте плагин подтверждения электронной почты, чтобы отправить электронное письмо пользователю со ссылкой, по которой он может щелкнуть, чтобы подтвердить изменение пароля. Это можно сделать, вызвав следующий метод в службе EmailConfirmationService, добавленной плагином.
def sendConfirmation(String emailAddress, String theSubject, Map model = null,
String userToken = null)
где:
emailAddress = address of user changing password
theSubject = subject of e-mail sent
model = any data passed to GSP that creates e-mail body
userToken = hashed user's password
когда пользователь нажимает на ссылку в электронном письме (для получения информации о том, как настроить это электронное письмо, обратитесь к документации по плагину), будет вызвано закрытие службы onConfirmation
.
Это закрытие должно быть назначено в Bootstrap.groovy
следующим образом:
def emailConfirmationService
def init = { servletContext ->
emailConfirmationService.onConfirmation = { email, hashedPassword ->
User user = User.findByEmail(email)
user.passwd = hashedPassword
if (!user.save()) {
// Handle this error, somehow....
}
// Then return a map which will redirect the user to the login screen (for example)
[controller:'userProfile', action:'login']
}
}
Обратите внимание, что электронная почта пользователя и хешированный пароль передаются в это закрытие, что позволяет вам сбросить и сохранить пароль пользователя.