From 6fff92e984c8977bb1b8d5424e8b81796e2ccb07 Mon Sep 17 00:00:00 2001 From: Dmitriy Zaporozhets Date: Wed, 9 Oct 2013 15:26:30 +0300 Subject: [PATCH] Enable confirmable and reconfirmable modules for User Now when you want to signup or change existing email you will be forced to confirm that you really own this email. You get email with link to follow in order to confirm your email address Conflicts: app/models/user.rb --- app/models/user.rb | 4 ++-- config/initializers/devise.rb | 2 ++ .../20131009115346_add_confirmable_to_users.rb | 15 +++++++++++++++ db/schema.rb | 7 ++++++- 4 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 db/migrate/20131009115346_add_confirmable_to_users.rb diff --git a/app/models/user.rb b/app/models/user.rb index 29c53b88331..22292de40a6 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -43,7 +43,7 @@ require 'file_size_validator' class User < ActiveRecord::Base devise :database_authenticatable, :token_authenticatable, :lockable, :async, - :recoverable, :rememberable, :trackable, :validatable, :omniauthable, :registerable + :recoverable, :rememberable, :trackable, :validatable, :omniauthable, :confirmable, :registerable attr_accessible :email, :password, :password_confirmation, :remember_me, :bio, :name, :username, :skype, :linkedin, :twitter, :color_scheme_id, :theme_id, :force_random_password, @@ -398,4 +398,4 @@ class User < ActiveRecord::Base self end -end \ No newline at end of file +end diff --git a/config/initializers/devise.rb b/config/initializers/devise.rb index 39c1b7c235b..b7cb808d2e5 100644 --- a/config/initializers/devise.rb +++ b/config/initializers/devise.rb @@ -54,6 +54,8 @@ Devise.setup do |config| # The realm used in Http Basic Authentication. "Application" by default. # config.http_authentication_realm = "Application" + config.reconfirmable = true + # It will change confirmation, password recovery and other workflows # to behave the same regardless if the e-mail provided was right or wrong. # Does not affect registerable. diff --git a/db/migrate/20131009115346_add_confirmable_to_users.rb b/db/migrate/20131009115346_add_confirmable_to_users.rb new file mode 100644 index 00000000000..249cbe704ed --- /dev/null +++ b/db/migrate/20131009115346_add_confirmable_to_users.rb @@ -0,0 +1,15 @@ +class AddConfirmableToUsers < ActiveRecord::Migration + def self.up + add_column :users, :confirmation_token, :string + add_column :users, :confirmed_at, :datetime + add_column :users, :confirmation_sent_at, :datetime + add_column :users, :unconfirmed_email, :string + add_index :users, :confirmation_token, unique: true + User.update_all(confirmed_at: Time.now) + end + + def self.down + remove_column :users, :confirmation_token, :confirmed_at, :confirmation_sent_at + remove_column :users, :unconfirmed_email + end +end diff --git a/db/schema.rb b/db/schema.rb index b3bc31c76dd..d6acb2f90e9 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -11,7 +11,7 @@ # # It's strongly recommended to check this file into your version control system. -ActiveRecord::Schema.define(:version => 20131005191208) do +ActiveRecord::Schema.define(:version => 20131009115346) do create_table "deploy_keys_projects", :force => true do |t| t.integer "deploy_key_id", :null => false @@ -284,10 +284,15 @@ ActiveRecord::Schema.define(:version => 20131005191208) do t.datetime "password_expires_at" t.integer "created_by_id" t.string "avatar" + t.string "confirmation_token" + t.datetime "confirmed_at" + t.datetime "confirmation_sent_at" + t.string "unconfirmed_email" end add_index "users", ["admin"], :name => "index_users_on_admin" add_index "users", ["authentication_token"], :name => "index_users_on_authentication_token", :unique => true + add_index "users", ["confirmation_token"], :name => "index_users_on_confirmation_token", :unique => true add_index "users", ["email"], :name => "index_users_on_email", :unique => true add_index "users", ["extern_uid", "provider"], :name => "index_users_on_extern_uid_and_provider", :unique => true add_index "users", ["name"], :name => "index_users_on_name"