Разработать мягкое подтверждение по электронной почте - PullRequest
5 голосов
/ 11 мая 2011

У меня есть приложение rails 3, которое использует Devise и подтверждаемый модуль. Однако, предотвращение доступа к сайту для новых зарегистрированных пользователей до тех пор, пока они не подтвердят свою электронную почту, вызывает проблемы с хранением Вместо этого мы хотели бы немедленно предоставить доступ пользователям и , отправив им подтверждение по электронной почте. Затем мы запустим фоновую задачу, чтобы заблокировать пользователя, который не подтвердил свою электронную почту в течение определенного периода времени.

Возможно ли это с подтверждаемым модулем? Есть ли способ создать активный ресурс (пользователя), который не подтвердил свою электронную почту с помощью подтверждающего модуля? Любой общий совет по реализации этого?

Ответы [ 3 ]

4 голосов
/ 11 мая 2011

Я полагаю, что вы можете использовать verify_within, чтобы указать ограничение блокировки. Вы можете включить это, когда вызываете devise_for.

http://rubydoc.info/github/plataformatec/devise/master/Devise/Models/Confirmable

Кроме того, вы можете ограничить определенное поведение «только» для подтвержденных пользователей, проверив подтвержденных? статус вашей модели пользователя. Вы можете сделать это в контроллере, или с помощью CanCan, или как угодно. Некоторые задачи на вашем сайте, вероятно, не требуют подтверждения; вам, вероятно, это понадобится больше, когда пользователь взаимодействует с другими людьми или может использовать ваш сайт для отправки определенных уведомлений / электронных писем и т. д.

2 голосов
/ 19 ноября 2011

Чтобы добавить более подробную информацию к принятому ответу. Да, вы можете использовать verify_within, но вам нужно сделать это, когда вы звоните devise, а не devise_for.

class User
  devise :database_authenticatable, :encryptable, :confirmable, :rememberable,      :timeoutable, :lockable,
     :stretches => 15, :pepper => 'abcdef', :confirm_within => 5.days,
     :remember_for => 7.days, :timeout_in => 15.minutes, :unlock_in => 10.days
end

Приведенный выше код взят из теста моделей для устройства

Вы также можете установить настройку в файле config/initializers/devise.rb с помощью config.confirm_within = 10.days

1 голос
/ 12 апреля 2013

Хм, я думаю, правильный флаг будет allow_unconfirmed_access_for:

config.allow_unconfirmed_access_for = 5.days

confirm_within просто указывает, как долго будет работать маркер по электронной почте.

Больше от config/initializers/devise.rb:

# ==> Configuration for :confirmable
# A period that the user is allowed to access the website even without
# confirming his account. For instance, if set to 2.days, the user will be
# able to access the website for two days without confirming his account,
# access will be blocked just in the third day. Default is 0.days, meaning
# the user cannot access the website without confirming his account.
# config.allow_unconfirmed_access_for = 2.days

# A period that the user is allowed to confirm their account before their
# token becomes invalid. For example, if set to 3.days, the user can confirm
# their account within 3 days after the mail was sent, but on the fourth day
# their account can't be confirmed with the token any more.
# Default is nil, meaning there is no restriction on how long a user can take
# before confirming their account.
# config.confirm_within = 3.days
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...