Как сменить адрес электронной почты пользователя в устройстве «безопасно»? - PullRequest
7 голосов
/ 11 января 2011

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

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

Если я разрешаю пользователю редактировать адрес электронной почты, и пользователь указывает «неправильный» (то есть опечатка по ошибке) адрес электронной почты, а затем пользователь выходит из системы, и пользователь также забывает, чтоопечатка была отправлена, теперь учетная запись пользователя недоступна для пользователя!

Как лучше всего обойти это?(за исключением создания отдельного неизменяемого поля имени пользователя, которое всегда позволяет пользователю войти в систему)

Ответы [ 2 ]

12 голосов
/ 13 января 2011

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

После того, как вы обновили пароль соответствующего пользователя, вам необходимо отменить подтверждение пользователя, а затем повторно отправить его.электронное письмо с подтверждением.

Чтобы не подтвердить пользователя:

user = User.find(1)
if user.confirmed?
  user.confirmed_at = nil
  user.save(:validate => false)
end

Чтобы отправить подтверждение по электронной почте:

user = User.find(1)
user.send_confirmation_instructions

Надеюсь, эта помощь!

9 голосов
/ 16 января 2014

Devise делает это из коробки. Вот информация из инициализатора:

# If true, requires any email changes to be confirmed (exactly the same way as
# initial account confirmation) to be applied. Requires additional unconfirmed_email
# db field (see migrations). Until confirmed new email is stored in
# unconfirmed email column, and copied to email column on successful confirmation.
config.reconfirmable = true

В подтверждаемом модуле вы можете увидеть, как он работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...