2010-05-02 5 views
5

J'ai un rôle d'utilisateur et d'administrateur dans mon projet. J'ai créé mon authentification avec Devise.Confirmation d'enregistrement de devise

Dans mon rôle d'administrateur, je n'ai aucune confirmation. Dans mon modèle d'utilisateur, je donne les résultats suivants:

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 

Ma migration ressemble:

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 

Dans mon routes.rb j'ai ajouté les déclarations suivantes:

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

map.root :controller => "main" 

Après l'enregistrement de l'utilisateur Je suis redirigé vers le contrôleur main avec la mention "Vous êtes inscrit (e)", et je suis connecté (e). Mais je ne veux pas être connecté, car je n'ai pas confirmé mon nouvel utilisateur. nt encore.

Si j'ouvre la console, je vois dans les journaux le texte du mail de confirmation, mais je suis déjà connecté. Je ne peux pas expliquer pourquoi. est-ce que quelqu'un a une idée?

Si je copie la confirmation-jeton à partir des journaux et confirme mon compte, je peux vous connecter, mais si je ne pas confirmer, je peux également vous connecter.

Répondre

8

Dans config/initializers/concevoir. rb il y a une ligne pour définir le temps qu'un utilisateur doit confirmer avant de se verrouiller.

config.confirm_within = 2.days 

Si vous définissez cette valeur sur 0, vous devriez obtenir le résultat souhaité.

+0

ouais c'était ça! Merci. Guitsaru j'ai une autre question, peut-être vous pouvez m'aider. Je veux tester peu de choses dans le test fonctionnel et pour cette raison, je dois me connecter à un utilisateur. l'assistant de connexion est bon et fonctionne très bien, mais j'ai des problèmes avec la confirmation. si je fais signe_in Utilisateur.make (je développe avec machiniste), l'Utilisateur sera fait, mais pas confirmé. Si je le fais: sign_in User.make (: confirmed_at => Time.now,: confirmation_sent_at => Time.now, ....) Ça ne marche pas. As-tu une idée de ce que je pourrais faire? – Mattherick

+2

Essayez d'utiliser la fonction de confirmation! utilisateur = User.make user.confirm! – guitsaru

+0

merci l'homme! c'était ça! m'a sauvé de googeling une autre demi-journée :) – Mattherick