Разработать подтверждение регистрации - PullRequest
5 голосов
/ 02 мая 2010

У меня есть роль пользователя и администратора в моем проекте. Я создал свою аутентификацию с Devise.

В моей роли администратора у меня нет подтверждения. В моей модели пользователя у меня есть следующее:

devise :database_authenticatable, :confirmable, :recoverable,
       :rememberable, :trackable, :validatable, :timeoutable, :registerable

# Setup accessible (or protected) attributes for your model
attr_accessible :email, :username, :prename, :surname, :phone, :street, :number, :location,
                :password, :password_confirmation

Моя миграция выглядит так:

class DeviseCreateUsers < ActiveRecord::Migration
  def self.up
    create_table(:users) do |t|
      t.database_authenticatable :null => false
      t.confirmable
      t.recoverable
      t.rememberable
      t.trackable
      t.timeoutable
      t.validateable
      t.string  :username
      t.string  :prename
      t.string  :surname
      t.string  :phone
      t.string  :street
      t.integer :number
      t.string  :location

      t.timestamps
    end

    add_index :users, :email,                :unique => true
    add_index :users, :confirmation_token,   :unique => true
    add_index :users, :reset_password_token, :unique => true
    add_index :users, :username,             :unique => true
    add_index :users, :prename,              :unique => false
    add_index :users, :surname,              :unique => false
    add_index :users, :phone,                :unique => false
    add_index :users, :street,               :unique => false
    add_index :users, :number,               :unique => false
    add_index :users, :location,             :unique => false
  end

  def self.down
    drop_table :users
  end
end

В мой route.rb я добавил следующие утверждения:

map.devise_for :admins
map.devise_for :users, :path_names => { :sign_up => "register", :sign_in => "login" }

map.root :controller => "main"

После регистрации пользователя я перенаправлен на контроллер main с уведомлением «Вы успешно зарегистрировались», и я вошел в систему. Но я не хочу входить в систему, потому что я не подтвердил моя новая учетная запись пользователя еще.

Если я открываю консоль, я вижу в журналах текст письма с подтверждением, но я уже вошел в систему. Я не могу объяснить, почему. У кого-нибудь есть идея?

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

1 Ответ

10 голосов
/ 04 мая 2010

В config / initializer / devise.rb есть строка для установки времени, которое пользователь должен подтвердить, прежде чем его заблокируют.

config.confirm_within = 2.days

Если установить значение 0, вы должны получить желаемый результат.

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