diff options
author | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-10-09 15:26:30 +0300 |
---|---|---|
committer | Dmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com> | 2013-10-15 09:56:04 +0300 |
commit | 6fff92e984c8977bb1b8d5424e8b81796e2ccb07 (patch) | |
tree | 2e5c12d0df796b325f62c8d8c76f35d19f5343c4 | |
parent | db7d15497082656bb60e43821529d07c38111a1b (diff) | |
download | gitlab-ce-6fff92e984c8977bb1b8d5424e8b81796e2ccb07.tar.gz |
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
-rw-r--r-- | app/models/user.rb | 4 | ||||
-rw-r--r-- | config/initializers/devise.rb | 2 | ||||
-rw-r--r-- | db/migrate/20131009115346_add_confirmable_to_users.rb | 15 | ||||
-rw-r--r-- | db/schema.rb | 7 |
4 files changed, 25 insertions, 3 deletions
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" |