add :confirmable to users + migration / letter_opener for local email confirmations
This commit is contained in:
parent
a192082a2b
commit
aabbd9fb8c
1
Gemfile
1
Gemfile
|
@ -91,4 +91,5 @@ group :development, :test do
|
||||||
gem 'simplecov-rcov', require: false
|
gem 'simplecov-rcov', require: false
|
||||||
gem 'database_cleaner'
|
gem 'database_cleaner'
|
||||||
gem 'better_errors'
|
gem 'better_errors'
|
||||||
|
gem "letter_opener" # Use this just in local test environments
|
||||||
end
|
end
|
||||||
|
|
|
@ -3,7 +3,7 @@ class User < ActiveRecord::Base
|
||||||
# :confirmable, :lockable, :timeoutable and :omniauthable
|
# :confirmable, :lockable, :timeoutable and :omniauthable
|
||||||
devise :database_authenticatable, :async, :registerable,
|
devise :database_authenticatable, :async, :registerable,
|
||||||
:recoverable, :rememberable, :trackable,
|
:recoverable, :rememberable, :trackable,
|
||||||
:validatable, :authentication_keys => [:login]
|
:validatable, :confirmable, :authentication_keys => [:login]
|
||||||
|
|
||||||
# attr_accessor :login
|
# attr_accessor :login
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
class AddConfirmableToDevise < ActiveRecord::Migration
|
||||||
|
def 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
|
||||||
|
execute("UPDATE users SET confirmed_at = NOW()")
|
||||||
|
end
|
||||||
|
|
||||||
|
def down
|
||||||
|
remove_columns :users, :confirmation_token, :confirmed_at, :confirmation_sent_at
|
||||||
|
remove_columns :users, :unconfirmed_email
|
||||||
|
end
|
||||||
|
end
|
70
db/schema.rb
70
db/schema.rb
|
@ -11,7 +11,7 @@
|
||||||
#
|
#
|
||||||
# It's strongly recommended that you check this file into your version control system.
|
# It's strongly recommended that you check this file into your version control system.
|
||||||
|
|
||||||
ActiveRecord::Schema.define(version: 20150704072402) do
|
ActiveRecord::Schema.define(version: 20150721154255) do
|
||||||
|
|
||||||
# These are extensions that must be enabled in order to support this database
|
# These are extensions that must be enabled in order to support this database
|
||||||
enable_extension "plpgsql"
|
enable_extension "plpgsql"
|
||||||
|
@ -24,6 +24,7 @@ ActiveRecord::Schema.define(version: 20150704072402) do
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.integer "smile_count", default: 0, null: false
|
t.integer "smile_count", default: 0, null: false
|
||||||
|
t.boolean "nsfw", default: false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "answers", ["user_id", "created_at"], name: "index_answers_on_user_id_and_created_at", using: :btree
|
add_index "answers", ["user_id", "created_at"], name: "index_answers_on_user_id_and_created_at", using: :btree
|
||||||
|
@ -113,6 +114,60 @@ ActiveRecord::Schema.define(version: 20150704072402) do
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
create_table "oauth_access_grants", force: :cascade do |t|
|
||||||
|
t.integer "resource_owner_id", null: false
|
||||||
|
t.integer "application_id", null: false
|
||||||
|
t.string "token", null: false
|
||||||
|
t.integer "expires_in", null: false
|
||||||
|
t.text "redirect_uri", null: false
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.datetime "revoked_at"
|
||||||
|
t.string "scopes"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_access_grants", ["token"], name: "index_oauth_access_grants_on_token", unique: true, using: :btree
|
||||||
|
|
||||||
|
create_table "oauth_access_tokens", force: :cascade do |t|
|
||||||
|
t.integer "resource_owner_id"
|
||||||
|
t.integer "application_id"
|
||||||
|
t.string "token", null: false
|
||||||
|
t.string "refresh_token"
|
||||||
|
t.integer "expires_in"
|
||||||
|
t.datetime "revoked_at"
|
||||||
|
t.datetime "created_at", null: false
|
||||||
|
t.string "scopes"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_access_tokens", ["refresh_token"], name: "index_oauth_access_tokens_on_refresh_token", unique: true, using: :btree
|
||||||
|
add_index "oauth_access_tokens", ["resource_owner_id"], name: "index_oauth_access_tokens_on_resource_owner_id", using: :btree
|
||||||
|
add_index "oauth_access_tokens", ["token"], name: "index_oauth_access_tokens_on_token", unique: true, using: :btree
|
||||||
|
|
||||||
|
create_table "oauth_applications", force: :cascade do |t|
|
||||||
|
t.string "name", null: false
|
||||||
|
t.string "uid", null: false
|
||||||
|
t.string "secret", null: false
|
||||||
|
t.text "redirect_uri", null: false
|
||||||
|
t.string "scopes", default: "", null: false
|
||||||
|
t.datetime "created_at"
|
||||||
|
t.datetime "updated_at"
|
||||||
|
t.integer "owner_id"
|
||||||
|
t.string "owner_type"
|
||||||
|
t.string "description"
|
||||||
|
t.string "icon_file_name"
|
||||||
|
t.string "icon_content_type"
|
||||||
|
t.integer "icon_file_size"
|
||||||
|
t.datetime "icon_updated_at"
|
||||||
|
t.integer "crop_x"
|
||||||
|
t.integer "crop_y"
|
||||||
|
t.integer "crop_w"
|
||||||
|
t.integer "crop_h"
|
||||||
|
t.boolean "icon_processing"
|
||||||
|
end
|
||||||
|
|
||||||
|
add_index "oauth_applications", ["name"], name: "index_oauth_applications_on_name", unique: true, using: :btree
|
||||||
|
add_index "oauth_applications", ["owner_id", "owner_type"], name: "index_oauth_applications_on_owner_id_and_owner_type", using: :btree
|
||||||
|
add_index "oauth_applications", ["uid"], name: "index_oauth_applications_on_uid", unique: true, using: :btree
|
||||||
|
|
||||||
create_table "questions", force: :cascade do |t|
|
create_table "questions", force: :cascade do |t|
|
||||||
t.string "content"
|
t.string "content"
|
||||||
t.boolean "author_is_anonymous"
|
t.boolean "author_is_anonymous"
|
||||||
|
@ -122,6 +177,7 @@ ActiveRecord::Schema.define(version: 20150704072402) do
|
||||||
t.datetime "created_at"
|
t.datetime "created_at"
|
||||||
t.datetime "updated_at"
|
t.datetime "updated_at"
|
||||||
t.integer "answer_count", default: 0, null: false
|
t.integer "answer_count", default: 0, null: false
|
||||||
|
t.boolean "nsfw", default: false
|
||||||
end
|
end
|
||||||
|
|
||||||
add_index "questions", ["user_id", "created_at"], name: "index_questions_on_user_id_and_created_at", using: :btree
|
add_index "questions", ["user_id", "created_at"], name: "index_questions_on_user_id_and_created_at", using: :btree
|
||||||
|
@ -220,6 +276,9 @@ ActiveRecord::Schema.define(version: 20150704072402) do
|
||||||
t.boolean "privacy_show_in_search", default: true
|
t.boolean "privacy_show_in_search", default: true
|
||||||
t.boolean "permanently_banned", default: false
|
t.boolean "permanently_banned", default: false
|
||||||
t.boolean "blogger", default: false
|
t.boolean "blogger", default: false
|
||||||
|
t.boolean "nsfw", default: false
|
||||||
|
t.boolean "show_nsfw", default: false
|
||||||
|
t.boolean "privacy_allow_nsfw_questions", default: true
|
||||||
t.boolean "contributor", default: false
|
t.boolean "contributor", default: false
|
||||||
t.string "ban_reason"
|
t.string "ban_reason"
|
||||||
t.datetime "banned_until"
|
t.datetime "banned_until"
|
||||||
|
@ -233,10 +292,17 @@ ActiveRecord::Schema.define(version: 20150704072402) do
|
||||||
t.integer "crop_h_y"
|
t.integer "crop_h_y"
|
||||||
t.integer "crop_h_w"
|
t.integer "crop_h_w"
|
||||||
t.integer "crop_h_h"
|
t.integer "crop_h_h"
|
||||||
|
t.string "socket_key", default: ""
|
||||||
|
t.datetime "socket_key_expiry", default: '0001-01-01 00:00:00'
|
||||||
t.string "locale", default: "en"
|
t.string "locale", default: "en"
|
||||||
t.boolean "translator", default: false
|
t.boolean "translator"
|
||||||
|
t.string "confirmation_token"
|
||||||
|
t.datetime "confirmed_at"
|
||||||
|
t.datetime "confirmation_sent_at"
|
||||||
|
t.string "unconfirmed_email"
|
||||||
end
|
end
|
||||||
|
|
||||||
|
add_index "users", ["confirmation_token"], name: "index_users_on_confirmation_token", unique: true, using: :btree
|
||||||
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
|
add_index "users", ["email"], name: "index_users_on_email", unique: true, using: :btree
|
||||||
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
|
add_index "users", ["reset_password_token"], name: "index_users_on_reset_password_token", unique: true, using: :btree
|
||||||
add_index "users", ["screen_name"], name: "index_users_on_screen_name", unique: true, using: :btree
|
add_index "users", ["screen_name"], name: "index_users_on_screen_name", unique: true, using: :btree
|
||||||
|
|
Loading…
Reference in New Issue