summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-10-09 15:26:30 +0300
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2013-10-15 09:56:04 +0300
commit6fff92e984c8977bb1b8d5424e8b81796e2ccb07 (patch)
tree2e5c12d0df796b325f62c8d8c76f35d19f5343c4
parentdb7d15497082656bb60e43821529d07c38111a1b (diff)
downloadgitlab-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.rb4
-rw-r--r--config/initializers/devise.rb2
-rw-r--r--db/migrate/20131009115346_add_confirmable_to_users.rb15
-rw-r--r--db/schema.rb7
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"