devise_token_auth 1.0.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (130) hide show
  1. checksums.yaml +5 -5
  2. data/README.md +4 -2
  3. data/app/controllers/devise_token_auth/application_controller.rb +19 -3
  4. data/app/controllers/devise_token_auth/concerns/resource_finder.rb +23 -11
  5. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +78 -57
  6. data/app/controllers/devise_token_auth/confirmations_controller.rb +67 -20
  7. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +82 -30
  8. data/app/controllers/devise_token_auth/passwords_controller.rb +53 -31
  9. data/app/controllers/devise_token_auth/registrations_controller.rb +33 -40
  10. data/app/controllers/devise_token_auth/sessions_controller.rb +24 -6
  11. data/app/controllers/devise_token_auth/unlocks_controller.rb +10 -6
  12. data/app/models/devise_token_auth/concerns/active_record_support.rb +14 -0
  13. data/app/models/devise_token_auth/concerns/confirmable_support.rb +28 -0
  14. data/app/models/devise_token_auth/concerns/mongoid_support.rb +19 -0
  15. data/app/models/devise_token_auth/concerns/tokens_serialization.rb +31 -0
  16. data/app/models/devise_token_auth/concerns/user.rb +77 -80
  17. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +12 -5
  18. data/app/validators/{email_validator.rb → devise_token_auth_email_validator.rb} +11 -3
  19. data/app/views/devise_token_auth/omniauth_external_window.html.erb +1 -1
  20. data/config/locales/da-DK.yml +2 -0
  21. data/config/locales/de.yml +2 -0
  22. data/config/locales/en.yml +10 -0
  23. data/config/locales/es.yml +2 -0
  24. data/config/locales/fr.yml +2 -0
  25. data/config/locales/he.yml +52 -0
  26. data/config/locales/it.yml +2 -0
  27. data/config/locales/ja.yml +16 -2
  28. data/config/locales/ko.yml +51 -0
  29. data/config/locales/nl.yml +2 -0
  30. data/config/locales/pl.yml +6 -3
  31. data/config/locales/pt-BR.yml +2 -0
  32. data/config/locales/pt.yml +6 -3
  33. data/config/locales/ro.yml +2 -0
  34. data/config/locales/ru.yml +2 -0
  35. data/config/locales/sq.yml +2 -0
  36. data/config/locales/sv.yml +2 -0
  37. data/config/locales/uk.yml +2 -0
  38. data/config/locales/vi.yml +2 -0
  39. data/config/locales/zh-CN.yml +2 -0
  40. data/config/locales/zh-HK.yml +2 -0
  41. data/config/locales/zh-TW.yml +2 -0
  42. data/lib/devise_token_auth/blacklist.rb +6 -0
  43. data/lib/devise_token_auth/controllers/helpers.rb +5 -9
  44. data/lib/devise_token_auth/engine.rb +17 -2
  45. data/lib/devise_token_auth/rails/routes.rb +18 -13
  46. data/lib/devise_token_auth/token_factory.rb +126 -0
  47. data/lib/devise_token_auth/url.rb +3 -0
  48. data/lib/devise_token_auth/version.rb +1 -1
  49. data/lib/devise_token_auth.rb +6 -3
  50. data/lib/generators/devise_token_auth/USAGE +1 -1
  51. data/lib/generators/devise_token_auth/install_generator.rb +7 -91
  52. data/lib/generators/devise_token_auth/install_generator_helpers.rb +98 -0
  53. data/lib/generators/devise_token_auth/install_mongoid_generator.rb +46 -0
  54. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +13 -0
  55. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +1 -8
  56. data/lib/generators/devise_token_auth/templates/user.rb.erb +2 -2
  57. data/lib/generators/devise_token_auth/templates/user_mongoid.rb.erb +56 -0
  58. data/test/controllers/custom/custom_confirmations_controller_test.rb +1 -1
  59. data/test/controllers/demo_mang_controller_test.rb +37 -8
  60. data/test/controllers/demo_user_controller_test.rb +39 -10
  61. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +163 -18
  62. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +110 -43
  63. data/test/controllers/devise_token_auth/passwords_controller_test.rb +299 -122
  64. data/test/controllers/devise_token_auth/registrations_controller_test.rb +54 -14
  65. data/test/controllers/devise_token_auth/sessions_controller_test.rb +31 -40
  66. data/test/controllers/devise_token_auth/token_validations_controller_test.rb +43 -2
  67. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +44 -5
  68. data/test/controllers/overrides/confirmations_controller_test.rb +1 -1
  69. data/test/dummy/app/active_record/confirmable_user.rb +11 -0
  70. data/test/dummy/app/{models → active_record}/scoped_user.rb +2 -2
  71. data/test/dummy/app/{models → active_record}/unconfirmable_user.rb +1 -2
  72. data/test/dummy/app/{models → active_record}/unregisterable_user.rb +3 -3
  73. data/test/dummy/app/active_record/user.rb +6 -0
  74. data/test/dummy/app/controllers/overrides/confirmations_controller.rb +3 -3
  75. data/test/dummy/app/controllers/overrides/passwords_controller.rb +3 -3
  76. data/test/dummy/app/controllers/overrides/registrations_controller.rb +1 -1
  77. data/test/dummy/app/controllers/overrides/sessions_controller.rb +2 -2
  78. data/test/dummy/app/models/{user.rb → concerns/favorite_color.rb} +7 -8
  79. data/test/dummy/app/mongoid/confirmable_user.rb +52 -0
  80. data/test/dummy/app/mongoid/lockable_user.rb +38 -0
  81. data/test/dummy/app/mongoid/mang.rb +46 -0
  82. data/test/dummy/app/mongoid/only_email_user.rb +33 -0
  83. data/test/dummy/app/mongoid/scoped_user.rb +50 -0
  84. data/test/dummy/app/mongoid/unconfirmable_user.rb +44 -0
  85. data/test/dummy/app/mongoid/unregisterable_user.rb +47 -0
  86. data/test/dummy/app/mongoid/user.rb +49 -0
  87. data/test/dummy/app/views/layouts/application.html.erb +0 -2
  88. data/test/dummy/config/application.rb +22 -1
  89. data/test/dummy/config/boot.rb +4 -0
  90. data/test/dummy/config/environments/development.rb +0 -10
  91. data/test/dummy/config/environments/production.rb +0 -16
  92. data/test/dummy/config/initializers/devise.rb +285 -0
  93. data/test/dummy/config/initializers/devise_token_auth.rb +35 -4
  94. data/test/dummy/config/initializers/figaro.rb +1 -1
  95. data/test/dummy/config/initializers/omniauth.rb +1 -0
  96. data/test/dummy/config/routes.rb +2 -0
  97. data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +0 -7
  98. data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +0 -7
  99. data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +0 -7
  100. data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +0 -7
  101. data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +0 -7
  102. data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +0 -7
  103. data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +0 -7
  104. data/test/dummy/db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb +49 -0
  105. data/test/dummy/db/schema.rb +31 -33
  106. data/test/dummy/tmp/generators/app/models/user.rb +11 -0
  107. data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +60 -0
  108. data/test/dummy/tmp/generators/db/migrate/20220822003050_devise_token_auth_create_users.rb +49 -0
  109. data/test/factories/users.rb +3 -2
  110. data/test/lib/devise_token_auth/blacklist_test.rb +19 -0
  111. data/test/lib/devise_token_auth/rails/custom_routes_test.rb +29 -0
  112. data/test/lib/devise_token_auth/rails/routes_test.rb +87 -0
  113. data/test/lib/devise_token_auth/token_factory_test.rb +191 -0
  114. data/test/lib/devise_token_auth/url_test.rb +2 -2
  115. data/test/lib/generators/devise_token_auth/install_generator_test.rb +51 -31
  116. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +51 -31
  117. data/test/models/concerns/mongoid_support_test.rb +31 -0
  118. data/test/models/concerns/tokens_serialization_test.rb +104 -0
  119. data/test/models/confirmable_user_test.rb +35 -0
  120. data/test/models/only_email_user_test.rb +0 -8
  121. data/test/models/user_test.rb +13 -23
  122. data/test/test_helper.rb +45 -4
  123. metadata +126 -33
  124. data/config/initializers/devise.rb +0 -198
  125. data/test/dummy/config/initializers/assets.rb +0 -10
  126. data/test/dummy/tmp/generators/app/views/devise/mailer/confirmation_instructions.html.erb +0 -5
  127. data/test/dummy/tmp/generators/app/views/devise/mailer/reset_password_instructions.html.erb +0 -8
  128. /data/test/dummy/app/{models → active_record}/lockable_user.rb +0 -0
  129. /data/test/dummy/app/{models → active_record}/mang.rb +0 -0
  130. /data/test/dummy/app/{models → active_record}/only_email_user.rb +0 -0
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- #Figaro.require("GITHUB_KEY", "GITHUB_SECRET", "FACEBOOK_KEY", "FACEBOOK_SECRET", "GOOGLE_KEY", "GOOGLE_SECRET")
3
+ #Figaro.require("GITHUB_KEY", "GITHUB_SECRET", "FACEBOOK_KEY", "FACEBOOK_SECRET", "GOOGLE_KEY", "GOOGLE_SECRET", "APPLE_CLIENT_ID", "APPLE_TEAM_ID", "APPLE_KEY", "APPLE_PEM")
@@ -4,6 +4,7 @@ Rails.application.config.middleware.use OmniAuth::Builder do |b|
4
4
  provider :github, ENV['GITHUB_KEY'], ENV['GITHUB_SECRET'], scope: 'email,profile'
5
5
  provider :facebook, ENV['FACEBOOK_KEY'], ENV['FACEBOOK_SECRET']
6
6
  provider :google_oauth2, ENV['GOOGLE_KEY'], ENV['GOOGLE_SECRET']
7
+ provider :apple, ENV['APPLE_CLIENT_ID'], '', { scope: 'email name', team_id: ENV['APPLE_TEAM_ID'], key_id: ENV['APPLE_KEY'], pem: ENV['APPLE_PEM'] }
7
8
  provider :developer,
8
9
  fields: [:first_name, :last_name],
9
10
  uid_field: :last_name
@@ -20,6 +20,8 @@ Rails.application.routes.draw do
20
20
 
21
21
  mount_devise_token_auth_for 'LockableUser', at: 'lockable_user_auth'
22
22
 
23
+ mount_devise_token_auth_for 'ConfirmableUser', at: 'confirmable_user_auth'
24
+
23
25
  # test namespacing
24
26
  namespace :api do
25
27
  scope :v1 do
@@ -18,13 +18,6 @@ class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[4.2]
18
18
  ## Rememberable
19
19
  t.datetime :remember_created_at
20
20
 
21
- ## Trackable
22
- t.integer :sign_in_count, default: 0, null: false
23
- t.datetime :current_sign_in_at
24
- t.datetime :last_sign_in_at
25
- t.string :current_sign_in_ip
26
- t.string :last_sign_in_ip
27
-
28
21
  ## Confirmable
29
22
  t.string :confirmation_token
30
23
  t.datetime :confirmed_at
@@ -18,13 +18,6 @@ class DeviseTokenAuthCreateMangs < ActiveRecord::Migration[4.2]
18
18
  ## Rememberable
19
19
  t.datetime :remember_created_at
20
20
 
21
- ## Trackable
22
- t.integer :sign_in_count, default: 0, null: false
23
- t.datetime :current_sign_in_at
24
- t.datetime :last_sign_in_at
25
- t.string :current_sign_in_ip
26
- t.string :last_sign_in_ip
27
-
28
21
  ## Confirmable
29
22
  t.string :confirmation_token
30
23
  t.datetime :confirmed_at
@@ -19,13 +19,6 @@ class DeviseTokenAuthCreateOnlyEmailUsers < ActiveRecord::Migration[4.2]
19
19
  ## Rememberable
20
20
  #t.datetime :remember_created_at
21
21
 
22
- ## Trackable
23
- #t.integer :sign_in_count, :default => 0, :null => false
24
- #t.datetime :current_sign_in_at
25
- #t.datetime :last_sign_in_at
26
- #t.string :current_sign_in_ip
27
- #t.string :last_sign_in_ip
28
-
29
22
  ## Confirmable
30
23
  #t.string :confirmation_token
31
24
  #t.datetime :confirmed_at
@@ -20,13 +20,6 @@ class DeviseTokenAuthCreateUnregisterableUsers < ActiveRecord::Migration[4.2]
20
20
  ## Rememberable
21
21
  t.datetime :remember_created_at
22
22
 
23
- ## Trackable
24
- t.integer :sign_in_count, default: 0, null: false
25
- t.datetime :current_sign_in_at
26
- t.datetime :last_sign_in_at
27
- t.string :current_sign_in_ip
28
- t.string :last_sign_in_ip
29
-
30
23
  ## Confirmable
31
24
  t.string :confirmation_token
32
25
  t.datetime :confirmed_at
@@ -20,13 +20,6 @@ class DeviseTokenAuthCreateUnconfirmableUsers < ActiveRecord::Migration[4.2]
20
20
  ## Rememberable
21
21
  t.datetime :remember_created_at
22
22
 
23
- ## Trackable
24
- t.integer :sign_in_count, default: 0, null: false
25
- t.datetime :current_sign_in_at
26
- t.datetime :last_sign_in_at
27
- t.string :current_sign_in_ip
28
- t.string :last_sign_in_ip
29
-
30
23
  ## Confirmable
31
24
  # t.string :confirmation_token
32
25
  # t.datetime :confirmed_at
@@ -20,13 +20,6 @@ class DeviseTokenAuthCreateScopedUsers < ActiveRecord::Migration[4.2]
20
20
  ## Rememberable
21
21
  t.datetime :remember_created_at
22
22
 
23
- ## Trackable
24
- t.integer :sign_in_count, default: 0, null: false
25
- t.datetime :current_sign_in_at
26
- t.datetime :last_sign_in_at
27
- t.string :current_sign_in_ip
28
- t.string :last_sign_in_ip
29
-
30
23
  ## Confirmable
31
24
  t.string :confirmation_token
32
25
  t.datetime :confirmed_at
@@ -20,13 +20,6 @@ class DeviseTokenAuthCreateLockableUsers < ActiveRecord::Migration[4.2]
20
20
  ## Rememberable
21
21
  # t.datetime :remember_created_at
22
22
 
23
- ## Trackable
24
- # t.integer :sign_in_count, :default => 0, :null => false
25
- # t.datetime :current_sign_in_at
26
- # t.datetime :last_sign_in_at
27
- # t.string :current_sign_in_ip
28
- # t.string :last_sign_in_ip
29
-
30
23
  ## Confirmable
31
24
  # t.string :confirmation_token
32
25
  # t.datetime :confirmed_at
@@ -0,0 +1,49 @@
1
+ class DeviseTokenAuthCreateConfirmableUsers < ActiveRecord::Migration[5.2]
2
+ def change
3
+
4
+ create_table(:confirmable_users) do |t|
5
+ ## Required
6
+ t.string :provider, :null => false, :default => "email"
7
+ t.string :uid, :null => false, :default => ""
8
+
9
+ ## Database authenticatable
10
+ t.string :encrypted_password, :null => false, :default => ""
11
+
12
+ ## Recoverable
13
+ t.string :reset_password_token
14
+ t.datetime :reset_password_sent_at
15
+ t.boolean :allow_password_change, :default => false
16
+
17
+ ## Rememberable
18
+ t.datetime :remember_created_at
19
+
20
+ ## Confirmable
21
+ t.string :confirmation_token
22
+ t.datetime :confirmed_at
23
+ t.datetime :confirmation_sent_at
24
+ t.string :unconfirmed_email # Only if using reconfirmable
25
+
26
+ ## Lockable
27
+ # t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
28
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
29
+ # t.datetime :locked_at
30
+
31
+ ## User Info
32
+ t.string :name
33
+ t.string :nickname
34
+ t.string :image
35
+ t.string :email
36
+
37
+ ## Tokens
38
+ t.text :tokens
39
+
40
+ t.timestamps
41
+ end
42
+
43
+ add_index :confirmable_users, :email, unique: true
44
+ add_index :confirmable_users, [:uid, :provider], unique: true
45
+ add_index :confirmable_users, :reset_password_token, unique: true
46
+ add_index :confirmable_users, :confirmation_token, unique: true
47
+ # add_index :confirmable_users, :unlock_token, unique: true
48
+ end
49
+ end
@@ -1,18 +1,41 @@
1
- # frozen_string_literal: true
2
-
3
1
  # This file is auto-generated from the current state of the database. Instead
4
2
  # of editing this file, please use the migrations feature of Active Record to
5
3
  # incrementally modify your database, and then regenerate this schema definition.
6
4
  #
7
- # Note that this schema.rb definition is the authoritative source for your
8
- # database schema. If you need to create the application database on another
9
- # system, you should be using db:schema:load, not running all the migrations
10
- # from scratch. The latter is a flawed and unsustainable approach (the more migrations
11
- # you'll amass, the slower it'll run and the greater likelihood for issues).
5
+ # This file is the source Rails uses to define your schema when running `bin/rails
6
+ # db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to
7
+ # be faster and is potentially less error prone than running all of your
8
+ # migrations from scratch. Old migrations may fail to apply correctly if those
9
+ # migrations use external dependencies or application code.
12
10
  #
13
11
  # It's strongly recommended that you check this file into your version control system.
14
12
 
15
- ActiveRecord::Schema.define(version: 20160629184441) do
13
+ ActiveRecord::Schema.define(version: 2019_09_24_101113) do
14
+
15
+ create_table "confirmable_users", force: :cascade do |t|
16
+ t.string "provider", default: "email", null: false
17
+ t.string "uid", default: "", null: false
18
+ t.string "encrypted_password", default: "", null: false
19
+ t.string "reset_password_token"
20
+ t.datetime "reset_password_sent_at"
21
+ t.boolean "allow_password_change", default: false
22
+ t.datetime "remember_created_at"
23
+ t.string "confirmation_token"
24
+ t.datetime "confirmed_at"
25
+ t.datetime "confirmation_sent_at"
26
+ t.string "unconfirmed_email"
27
+ t.string "name"
28
+ t.string "nickname"
29
+ t.string "image"
30
+ t.string "email"
31
+ t.text "tokens"
32
+ t.datetime "created_at", null: false
33
+ t.datetime "updated_at", null: false
34
+ t.index ["confirmation_token"], name: "index_confirmable_users_on_confirmation_token", unique: true
35
+ t.index ["email"], name: "index_confirmable_users_on_email", unique: true
36
+ t.index ["reset_password_token"], name: "index_confirmable_users_on_reset_password_token", unique: true
37
+ t.index ["uid", "provider"], name: "index_confirmable_users_on_uid_and_provider", unique: true
38
+ end
16
39
 
17
40
  create_table "lockable_users", force: :cascade do |t|
18
41
  t.string "provider", null: false
@@ -41,11 +64,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
41
64
  t.string "reset_password_redirect_url"
42
65
  t.boolean "allow_password_change", default: false
43
66
  t.datetime "remember_created_at"
44
- t.integer "sign_in_count", default: 0, null: false
45
- t.datetime "current_sign_in_at"
46
- t.datetime "last_sign_in_at"
47
- t.string "current_sign_in_ip"
48
- t.string "last_sign_in_ip"
49
67
  t.string "confirmation_token"
50
68
  t.datetime "confirmed_at"
51
69
  t.datetime "confirmation_sent_at"
@@ -88,11 +106,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
88
106
  t.datetime "reset_password_sent_at"
89
107
  t.boolean "allow_password_change", default: false
90
108
  t.datetime "remember_created_at"
91
- t.integer "sign_in_count", default: 0, null: false
92
- t.datetime "current_sign_in_at"
93
- t.datetime "last_sign_in_at"
94
- t.string "current_sign_in_ip"
95
- t.string "last_sign_in_ip"
96
109
  t.string "confirmation_token"
97
110
  t.datetime "confirmed_at"
98
111
  t.datetime "confirmation_sent_at"
@@ -117,11 +130,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
117
130
  t.datetime "reset_password_sent_at"
118
131
  t.boolean "allow_password_change", default: false
119
132
  t.datetime "remember_created_at"
120
- t.integer "sign_in_count", default: 0, null: false
121
- t.datetime "current_sign_in_at"
122
- t.datetime "last_sign_in_at"
123
- t.string "current_sign_in_ip"
124
- t.string "last_sign_in_ip"
125
133
  t.string "name"
126
134
  t.string "nickname"
127
135
  t.string "image"
@@ -142,11 +150,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
142
150
  t.datetime "reset_password_sent_at"
143
151
  t.boolean "allow_password_change", default: false
144
152
  t.datetime "remember_created_at"
145
- t.integer "sign_in_count", default: 0, null: false
146
- t.datetime "current_sign_in_at"
147
- t.datetime "last_sign_in_at"
148
- t.string "current_sign_in_ip"
149
- t.string "last_sign_in_ip"
150
153
  t.string "confirmation_token"
151
154
  t.datetime "confirmed_at"
152
155
  t.datetime "confirmation_sent_at"
@@ -171,11 +174,6 @@ ActiveRecord::Schema.define(version: 20160629184441) do
171
174
  t.string "reset_password_redirect_url"
172
175
  t.boolean "allow_password_change", default: false
173
176
  t.datetime "remember_created_at"
174
- t.integer "sign_in_count", default: 0, null: false
175
- t.datetime "current_sign_in_at"
176
- t.datetime "last_sign_in_at"
177
- t.string "current_sign_in_ip"
178
- t.string "last_sign_in_ip"
179
177
  t.string "confirmation_token"
180
178
  t.datetime "confirmed_at"
181
179
  t.datetime "confirmation_sent_at"
@@ -0,0 +1,11 @@
1
+ class User < ApplicationRecord
2
+ # Include default devise modules.
3
+ devise :database_authenticatable, :registerable,
4
+ :recoverable, :rememberable, :trackable, :validatable,
5
+ :confirmable, :omniauthable
6
+ include DeviseTokenAuth::Concerns::User
7
+
8
+ def whatever
9
+ puts 'whatever'
10
+ end
11
+ end
@@ -0,0 +1,60 @@
1
+ # frozen_string_literal: true
2
+
3
+ DeviseTokenAuth.setup do |config|
4
+ # By default the authorization headers will change after each request. The
5
+ # client is responsible for keeping track of the changing tokens. Change
6
+ # this to false to prevent the Authorization header from changing after
7
+ # each request.
8
+ # config.change_headers_on_each_request = true
9
+
10
+ # By default, users will need to re-authenticate after 2 weeks. This setting
11
+ # determines how long tokens will remain valid after they are issued.
12
+ # config.token_lifespan = 2.weeks
13
+
14
+ # Limiting the token_cost to just 4 in testing will increase the performance of
15
+ # your test suite dramatically. The possible cost value is within range from 4
16
+ # to 31. It is recommended to not use a value more than 10 in other environments.
17
+ config.token_cost = Rails.env.test? ? 4 : 10
18
+
19
+ # Sets the max number of concurrent devices per user, which is 10 by default.
20
+ # After this limit is reached, the oldest tokens will be removed.
21
+ # config.max_number_of_devices = 10
22
+
23
+ # Sometimes it's necessary to make several requests to the API at the same
24
+ # time. In this case, each request in the batch will need to share the same
25
+ # auth token. This setting determines how far apart the requests can be while
26
+ # still using the same auth token.
27
+ # config.batch_request_buffer_throttle = 5.seconds
28
+
29
+ # This route will be the prefix for all oauth2 redirect callbacks. For
30
+ # example, using the default '/omniauth', the github oauth2 provider will
31
+ # redirect successful authentications to '/omniauth/github/callback'
32
+ # config.omniauth_prefix = "/omniauth"
33
+
34
+ # By default sending current password is not needed for the password update.
35
+ # Uncomment to enforce current_password param to be checked before all
36
+ # attribute updates. Set it to :password if you want it to be checked only if
37
+ # password is updated.
38
+ # config.check_current_password_before_update = :attributes
39
+
40
+ # By default we will use callbacks for single omniauth.
41
+ # It depends on fields like email, provider and uid.
42
+ # config.default_callbacks = true
43
+
44
+ # Makes it possible to change the headers names
45
+ # config.headers_names = {:'access-token' => 'access-token',
46
+ # :'client' => 'client',
47
+ # :'expiry' => 'expiry',
48
+ # :'uid' => 'uid',
49
+ # :'token-type' => 'token-type' }
50
+
51
+ # By default, only Bearer Token authentication is implemented out of the box.
52
+ # If, however, you wish to integrate with legacy Devise authentication, you can
53
+ # do so by enabling this flag. NOTE: This feature is highly experimental!
54
+ # config.enable_standard_devise_support = false
55
+
56
+ # By default DeviseTokenAuth will not send confirmation email, even when including
57
+ # devise confirmable module. If you want to use devise confirmable module and
58
+ # send email, set it to true. (This is a setting for compatibility)
59
+ # config.send_confirmation_email = true
60
+ end
@@ -0,0 +1,49 @@
1
+ class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[5.2]
2
+ def change
3
+
4
+ create_table(:users) do |t|
5
+ ## Required
6
+ t.string :provider, :null => false, :default => "email"
7
+ t.string :uid, :null => false, :default => ""
8
+
9
+ ## Database authenticatable
10
+ t.string :encrypted_password, :null => false, :default => ""
11
+
12
+ ## Recoverable
13
+ t.string :reset_password_token
14
+ t.datetime :reset_password_sent_at
15
+ t.boolean :allow_password_change, :default => false
16
+
17
+ ## Rememberable
18
+ t.datetime :remember_created_at
19
+
20
+ ## Confirmable
21
+ t.string :confirmation_token
22
+ t.datetime :confirmed_at
23
+ t.datetime :confirmation_sent_at
24
+ t.string :unconfirmed_email # Only if using reconfirmable
25
+
26
+ ## Lockable
27
+ # t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
28
+ # t.string :unlock_token # Only if unlock strategy is :email or :both
29
+ # t.datetime :locked_at
30
+
31
+ ## User Info
32
+ t.string :name
33
+ t.string :nickname
34
+ t.string :image
35
+ t.string :email
36
+
37
+ ## Tokens
38
+ t.text :tokens
39
+
40
+ t.timestamps
41
+ end
42
+
43
+ add_index :users, :email, unique: true
44
+ add_index :users, [:uid, :provider], unique: true
45
+ add_index :users, :reset_password_token, unique: true
46
+ add_index :users, :confirmation_token, unique: true
47
+ # add_index :users, :unlock_token, unique: true
48
+ end
49
+ end
@@ -1,6 +1,6 @@
1
1
  FactoryBot.define do
2
2
  factory :user do
3
- email { Faker::Internet.safe_email }
3
+ email { Faker::Internet.unique.safe_email }
4
4
  password { Faker::Internet.password }
5
5
  provider { 'email' }
6
6
 
@@ -24,7 +24,7 @@ FactoryBot.define do
24
24
  end
25
25
 
26
26
  trait :facebook do
27
- uid { Faker::Number.number(10) }
27
+ uid { Faker::Number.number }
28
28
  provider { 'facebook' }
29
29
  end
30
30
 
@@ -36,5 +36,6 @@ FactoryBot.define do
36
36
  factory :mang_user, class: 'Mang'
37
37
  factory :only_email_user, class: 'OnlyEmailUser'
38
38
  factory :scoped_user, class: 'ScopedUser'
39
+ factory :confirmable_user, class: 'ConfirmableUser'
39
40
  end
40
41
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class DeviseTokenAuth::BlacklistTest < ActiveSupport::TestCase
6
+ if defined? Devise::Models::Authenticatable::UNSAFE_ATTRIBUTES_FOR_SERIALIZATION
7
+ describe Devise::Models::Authenticatable::UNSAFE_ATTRIBUTES_FOR_SERIALIZATION do
8
+ test 'should include :tokens' do
9
+ assert Devise::Models::Authenticatable::UNSAFE_ATTRIBUTES_FOR_SERIALIZATION.include?(:tokens)
10
+ end
11
+ end
12
+ else
13
+ describe Devise::Models::Authenticatable::BLACKLIST_FOR_SERIALIZATION do
14
+ test 'should include :tokens' do
15
+ assert Devise::Models::Authenticatable::BLACKLIST_FOR_SERIALIZATION.include?(:tokens)
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ class DeviseTokenAuth::CustomRoutesTest < ActiveSupport::TestCase
6
+ after do
7
+ Rails.application.reload_routes!
8
+ end
9
+ test 'custom controllers' do
10
+ class ActionDispatch::Routing::Mapper
11
+ include Mocha::ParameterMatchers
12
+ end
13
+ Rails.application.routes.draw do
14
+ self.expects(:devise_for).with(
15
+ :users,
16
+ has_entries(
17
+ controllers: has_entries(
18
+ invitations: "custom/invitations", foo: "custom/foo"
19
+ )
20
+ )
21
+ )
22
+
23
+ mount_devise_token_auth_for 'User', at: 'my_custom_users', controllers: {
24
+ invitations: 'custom/invitations',
25
+ foo: 'custom/foo'
26
+ }
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,87 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'test_helper'
4
+
5
+ # Needed for MiniTest to start a controller test so we can use assert_recognizes
6
+ class DeviseTokenAuth::RoutesTestController < DeviseTokenAuth::ApplicationController
7
+ end
8
+
9
+ class DeviseTokenAuth::RoutesTest < ActionController::TestCase
10
+ self.controller_class = DeviseTokenAuth::RoutesTestController
11
+ before do
12
+ Rails.application.routes.draw do
13
+ mount_devise_token_auth_for 'User', at: 'my_custom_users', controllers: {
14
+ invitations: 'custom/invitations',
15
+ foo: 'custom/foo'
16
+ }
17
+ end
18
+ end
19
+
20
+ after do
21
+ Rails.application.reload_routes!
22
+ end
23
+
24
+ test 'map new user session' do
25
+ assert_recognizes({controller: 'devise_token_auth/sessions', action: 'new'}, {path: 'my_custom_users/sign_in', method: :get})
26
+ end
27
+
28
+ test 'map create user session' do
29
+ assert_recognizes({controller: 'devise_token_auth/sessions', action: 'create'}, {path: 'my_custom_users/sign_in', method: :post})
30
+ end
31
+
32
+ test 'map destroy user session' do
33
+ assert_recognizes({controller: 'devise_token_auth/sessions', action: 'destroy'}, {path: 'my_custom_users/sign_out', method: :delete})
34
+ end
35
+
36
+ test 'map new user confirmation' do
37
+ assert_recognizes({controller: 'devise_token_auth/confirmations', action: 'new'}, 'my_custom_users/confirmation/new')
38
+ end
39
+
40
+ test 'map create user confirmation' do
41
+ assert_recognizes({controller: 'devise_token_auth/confirmations', action: 'create'}, {path: 'my_custom_users/confirmation', method: :post})
42
+ end
43
+
44
+ test 'map show user confirmation' do
45
+ assert_recognizes({controller: 'devise_token_auth/confirmations', action: 'show'}, {path: 'my_custom_users/confirmation', method: :get})
46
+ end
47
+
48
+ test 'map new user password' do
49
+ assert_recognizes({controller: 'devise_token_auth/passwords', action: 'new'}, 'my_custom_users/password/new')
50
+ end
51
+
52
+ test 'map create user password' do
53
+ assert_recognizes({controller: 'devise_token_auth/passwords', action: 'create'}, {path: 'my_custom_users/password', method: :post})
54
+ end
55
+
56
+ test 'map edit user password' do
57
+ assert_recognizes({controller: 'devise_token_auth/passwords', action: 'edit'}, 'my_custom_users/password/edit')
58
+ end
59
+
60
+ test 'map update user password' do
61
+ assert_recognizes({controller: 'devise_token_auth/passwords', action: 'update'}, {path: 'my_custom_users/password', method: :put})
62
+ end
63
+
64
+ test 'map new user registration' do
65
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'new'}, 'my_custom_users/sign_up')
66
+ end
67
+
68
+ test 'map create user registration' do
69
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'create'}, {path: 'my_custom_users', method: :post})
70
+ end
71
+
72
+ test 'map edit user registration' do
73
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'edit'}, {path: 'my_custom_users/edit', method: :get})
74
+ end
75
+
76
+ test 'map update user registration' do
77
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'update'}, {path: 'my_custom_users', method: :put})
78
+ end
79
+
80
+ test 'map destroy user registration' do
81
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'destroy'}, {path: 'my_custom_users', method: :delete})
82
+ end
83
+
84
+ test 'map cancel user registration' do
85
+ assert_recognizes({controller: 'devise_token_auth/registrations', action: 'cancel'}, {path: 'my_custom_users/cancel', method: :get})
86
+ end
87
+ end