Подтверждение электронной почты в Rails без использования существующих генов/плагинов аутентификации
Я работаю над этой службой оповещений в Rails. И действительно, все, что мне нужно сделать, - это когда пользователь подписывается, отправьте электронное письмо с подтверждением пользователю. И после подтверждения от пользователя активируйте пользователя. Я пробовал играть с учебным пособием по активации электронной почты Matt Hooks Authlogic, но он действительно нигде не ведет. Итак, любые идеи, как я могу это сделать с минимальной суетой?
Благодарю!
UPDATE
Итак, как я получил работу, чтобы выполнить эту работу для меня:
-
Установите драгоценный камень.
-
Создайте миграцию для создания подтвержденных полей.
-
Укажите
изобретать: подтверждать
в вашей модели.
-
Создайте метод подтверждения в соответствующем контроллере (и маршрут для этого метода), который обновит атрибут confirm_at соответствующей модели.
- Генератор разработки создает для вас несколько просмотров, один из которых - confirm_instructions.html.erb. Настройте путь там.
Я использовал Rails 2.3.2, и я использовал этот метод вместе с аутентификацией Authlogic, и он работал хорошо. Я планирую полностью переключиться на разработку.
Честно говоря, я хотел принять оба ответа (к сожалению, я не могу этого сделать), но именно так, что решение для разработки оказалось более простым решением.
Ответы
Ответ 1
Предполагая, что вы получили название, которое вы определенно хотите избежать Devise, Authlogic и друзей, вот что, я думаю, вам нужно сделать:
- Создайте в пользовательской модели атрибуты "подтверждения" и "подтвержденные".
- Создайте новый контроллер на вашем пользовательском контроллере, который ожидает идентификатор пользователя и код подтверждения, ищет пользователя и затем проверяет, соответствует ли код в параметре коду, хранящемуся в БД. Если это так, он очищает код и устанавливает confirm = true.
- Создайте маршрут, который отображает, например. /users/ 1/confirm/code к вашему новому методу контроллера.
- Создайте шаблон ActionMailer для электронной почты, которую вы хотите отправить. Это должно принять пользователя как параметр и использовать код подтверждения пользователя для отправки почты, содержащей ссылку на новый маршрут.
- Создайте наблюдателя для своей модели пользователя. Если запись создана или адрес электронной почты изменен, затем сформируйте случайный код подтверждения, установите его в модель и очистите флаг подтверждения. Затем активируйте ActionMailer.
- Создайте вспомогательный метод, который позволяет представлениям проверять, подтвержден ли текущий пользователь.
- Используйте этот метод для включения/отключения функциональности по мере необходимости. Не забудьте защитить свои методы контроллера, а также логику представления.
Ответ 2
Вы также можете использовать области для выбора пользователей.
class User < ActiveRecord::Base
scope :certified, where(:certified => true)
end
И затем в вашем коде:
@user = User.certified.find_by_username(foo)
Ответ 3
Devise - это еще один отличный камень для проверки подлинности, который поставляется с встроенной активацией электронной почты, возможно, вы могли бы отвести его.