devise_token_auth_multi_email 0.9.0

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 (183) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE +13 -0
  3. data/README.md +97 -0
  4. data/Rakefile +42 -0
  5. data/app/controllers/devise_token_auth/application_controller.rb +100 -0
  6. data/app/controllers/devise_token_auth/concerns/resource_finder.rb +68 -0
  7. data/app/controllers/devise_token_auth/concerns/set_user_by_token.rb +199 -0
  8. data/app/controllers/devise_token_auth/confirmations_controller.rb +89 -0
  9. data/app/controllers/devise_token_auth/omniauth_callbacks_controller.rb +284 -0
  10. data/app/controllers/devise_token_auth/passwords_controller.rb +216 -0
  11. data/app/controllers/devise_token_auth/registrations_controller.rb +205 -0
  12. data/app/controllers/devise_token_auth/sessions_controller.rb +153 -0
  13. data/app/controllers/devise_token_auth/token_validations_controller.rb +31 -0
  14. data/app/controllers/devise_token_auth/unlocks_controller.rb +94 -0
  15. data/app/models/devise_token_auth/concerns/active_record_support.rb +18 -0
  16. data/app/models/devise_token_auth/concerns/confirmable_support.rb +28 -0
  17. data/app/models/devise_token_auth/concerns/mongoid_support.rb +19 -0
  18. data/app/models/devise_token_auth/concerns/tokens_serialization.rb +31 -0
  19. data/app/models/devise_token_auth/concerns/user.rb +282 -0
  20. data/app/models/devise_token_auth/concerns/user_omniauth_callbacks.rb +39 -0
  21. data/app/validators/devise_token_auth_email_validator.rb +31 -0
  22. data/app/views/devise/mailer/confirmation_instructions.html.erb +5 -0
  23. data/app/views/devise/mailer/reset_password_instructions.html.erb +8 -0
  24. data/app/views/devise/mailer/unlock_instructions.html.erb +7 -0
  25. data/app/views/devise_token_auth/omniauth_external_window.html.erb +38 -0
  26. data/config/locales/da-DK.yml +52 -0
  27. data/config/locales/de.yml +51 -0
  28. data/config/locales/en.yml +60 -0
  29. data/config/locales/es.yml +51 -0
  30. data/config/locales/fa.yml +60 -0
  31. data/config/locales/fr.yml +51 -0
  32. data/config/locales/he.yml +52 -0
  33. data/config/locales/it.yml +48 -0
  34. data/config/locales/ja.yml +60 -0
  35. data/config/locales/ko.yml +51 -0
  36. data/config/locales/nl.yml +32 -0
  37. data/config/locales/pl.yml +51 -0
  38. data/config/locales/pt-BR.yml +48 -0
  39. data/config/locales/pt.yml +51 -0
  40. data/config/locales/ro.yml +48 -0
  41. data/config/locales/ru.yml +52 -0
  42. data/config/locales/sq.yml +48 -0
  43. data/config/locales/sv.yml +52 -0
  44. data/config/locales/uk.yml +61 -0
  45. data/config/locales/vi.yml +52 -0
  46. data/config/locales/zh-CN.yml +48 -0
  47. data/config/locales/zh-HK.yml +50 -0
  48. data/config/locales/zh-TW.yml +50 -0
  49. data/lib/devise_token_auth/blacklist.rb +6 -0
  50. data/lib/devise_token_auth/controllers/helpers.rb +157 -0
  51. data/lib/devise_token_auth/controllers/url_helpers.rb +10 -0
  52. data/lib/devise_token_auth/engine.rb +105 -0
  53. data/lib/devise_token_auth/errors.rb +8 -0
  54. data/lib/devise_token_auth/rails/routes.rb +122 -0
  55. data/lib/devise_token_auth/token_factory.rb +126 -0
  56. data/lib/devise_token_auth/url.rb +44 -0
  57. data/lib/devise_token_auth/version.rb +5 -0
  58. data/lib/devise_token_auth.rb +14 -0
  59. data/lib/generators/devise_token_auth/USAGE +31 -0
  60. data/lib/generators/devise_token_auth/install_generator.rb +91 -0
  61. data/lib/generators/devise_token_auth/install_generator_helpers.rb +98 -0
  62. data/lib/generators/devise_token_auth/install_mongoid_generator.rb +46 -0
  63. data/lib/generators/devise_token_auth/install_views_generator.rb +18 -0
  64. data/lib/generators/devise_token_auth/templates/devise_token_auth.rb +66 -0
  65. data/lib/generators/devise_token_auth/templates/devise_token_auth_create_users.rb.erb +49 -0
  66. data/lib/generators/devise_token_auth/templates/user.rb.erb +9 -0
  67. data/lib/generators/devise_token_auth/templates/user_mongoid.rb.erb +56 -0
  68. data/lib/tasks/devise_token_auth_tasks.rake +6 -0
  69. data/test/controllers/custom/custom_confirmations_controller_test.rb +25 -0
  70. data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +33 -0
  71. data/test/controllers/custom/custom_passwords_controller_test.rb +79 -0
  72. data/test/controllers/custom/custom_registrations_controller_test.rb +63 -0
  73. data/test/controllers/custom/custom_sessions_controller_test.rb +39 -0
  74. data/test/controllers/custom/custom_token_validations_controller_test.rb +42 -0
  75. data/test/controllers/demo_group_controller_test.rb +151 -0
  76. data/test/controllers/demo_mang_controller_test.rb +313 -0
  77. data/test/controllers/demo_user_controller_test.rb +658 -0
  78. data/test/controllers/devise_token_auth/confirmations_controller_test.rb +275 -0
  79. data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +438 -0
  80. data/test/controllers/devise_token_auth/passwords_controller_test.rb +893 -0
  81. data/test/controllers/devise_token_auth/registrations_controller_test.rb +920 -0
  82. data/test/controllers/devise_token_auth/sessions_controller_test.rb +605 -0
  83. data/test/controllers/devise_token_auth/token_validations_controller_test.rb +142 -0
  84. data/test/controllers/devise_token_auth/unlocks_controller_test.rb +235 -0
  85. data/test/controllers/overrides/confirmations_controller_test.rb +47 -0
  86. data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +53 -0
  87. data/test/controllers/overrides/passwords_controller_test.rb +64 -0
  88. data/test/controllers/overrides/registrations_controller_test.rb +46 -0
  89. data/test/controllers/overrides/sessions_controller_test.rb +35 -0
  90. data/test/controllers/overrides/token_validations_controller_test.rb +43 -0
  91. data/test/dummy/README.rdoc +28 -0
  92. data/test/dummy/app/active_record/confirmable_user.rb +11 -0
  93. data/test/dummy/app/active_record/lockable_user.rb +7 -0
  94. data/test/dummy/app/active_record/mang.rb +5 -0
  95. data/test/dummy/app/active_record/only_email_user.rb +7 -0
  96. data/test/dummy/app/active_record/scoped_user.rb +9 -0
  97. data/test/dummy/app/active_record/unconfirmable_user.rb +9 -0
  98. data/test/dummy/app/active_record/unregisterable_user.rb +9 -0
  99. data/test/dummy/app/active_record/user.rb +6 -0
  100. data/test/dummy/app/controllers/application_controller.rb +14 -0
  101. data/test/dummy/app/controllers/auth_origin_controller.rb +7 -0
  102. data/test/dummy/app/controllers/custom/confirmations_controller.rb +13 -0
  103. data/test/dummy/app/controllers/custom/omniauth_callbacks_controller.rb +13 -0
  104. data/test/dummy/app/controllers/custom/passwords_controller.rb +39 -0
  105. data/test/dummy/app/controllers/custom/registrations_controller.rb +39 -0
  106. data/test/dummy/app/controllers/custom/sessions_controller.rb +29 -0
  107. data/test/dummy/app/controllers/custom/token_validations_controller.rb +19 -0
  108. data/test/dummy/app/controllers/demo_group_controller.rb +15 -0
  109. data/test/dummy/app/controllers/demo_mang_controller.rb +14 -0
  110. data/test/dummy/app/controllers/demo_user_controller.rb +27 -0
  111. data/test/dummy/app/controllers/overrides/confirmations_controller.rb +29 -0
  112. data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +16 -0
  113. data/test/dummy/app/controllers/overrides/passwords_controller.rb +36 -0
  114. data/test/dummy/app/controllers/overrides/registrations_controller.rb +29 -0
  115. data/test/dummy/app/controllers/overrides/sessions_controller.rb +36 -0
  116. data/test/dummy/app/controllers/overrides/token_validations_controller.rb +23 -0
  117. data/test/dummy/app/helpers/application_helper.rb +1058 -0
  118. data/test/dummy/app/models/concerns/favorite_color.rb +19 -0
  119. data/test/dummy/app/mongoid/confirmable_user.rb +52 -0
  120. data/test/dummy/app/mongoid/lockable_user.rb +38 -0
  121. data/test/dummy/app/mongoid/mang.rb +46 -0
  122. data/test/dummy/app/mongoid/only_email_user.rb +33 -0
  123. data/test/dummy/app/mongoid/scoped_user.rb +50 -0
  124. data/test/dummy/app/mongoid/unconfirmable_user.rb +44 -0
  125. data/test/dummy/app/mongoid/unregisterable_user.rb +47 -0
  126. data/test/dummy/app/mongoid/user.rb +49 -0
  127. data/test/dummy/app/views/layouts/application.html.erb +12 -0
  128. data/test/dummy/config/application.rb +50 -0
  129. data/test/dummy/config/application.yml.bk +0 -0
  130. data/test/dummy/config/boot.rb +11 -0
  131. data/test/dummy/config/environment.rb +7 -0
  132. data/test/dummy/config/environments/development.rb +36 -0
  133. data/test/dummy/config/environments/production.rb +68 -0
  134. data/test/dummy/config/environments/test.rb +58 -0
  135. data/test/dummy/config/initializers/backtrace_silencers.rb +9 -0
  136. data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
  137. data/test/dummy/config/initializers/devise.rb +290 -0
  138. data/test/dummy/config/initializers/devise_token_auth.rb +55 -0
  139. data/test/dummy/config/initializers/figaro.rb +3 -0
  140. data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
  141. data/test/dummy/config/initializers/inflections.rb +18 -0
  142. data/test/dummy/config/initializers/mime_types.rb +6 -0
  143. data/test/dummy/config/initializers/omniauth.rb +11 -0
  144. data/test/dummy/config/initializers/session_store.rb +5 -0
  145. data/test/dummy/config/initializers/wrap_parameters.rb +16 -0
  146. data/test/dummy/config/routes.rb +57 -0
  147. data/test/dummy/config/spring.rb +3 -0
  148. data/test/dummy/config.ru +18 -0
  149. data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +58 -0
  150. data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +57 -0
  151. data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +8 -0
  152. data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +7 -0
  153. data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +55 -0
  154. data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +56 -0
  155. data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +56 -0
  156. data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +56 -0
  157. data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +56 -0
  158. data/test/dummy/db/migrate/20190924101113_devise_token_auth_create_confirmable_users.rb +49 -0
  159. data/test/dummy/db/schema.rb +198 -0
  160. data/test/dummy/lib/migration_database_helper.rb +43 -0
  161. data/test/dummy/tmp/generators/app/models/mang.rb +9 -0
  162. data/test/dummy/tmp/generators/app/models/user.rb +9 -0
  163. data/test/dummy/tmp/generators/config/initializers/devise_token_auth.rb +60 -0
  164. data/test/dummy/tmp/generators/config/routes.rb +9 -0
  165. data/test/dummy/tmp/generators/db/migrate/20210305040222_devise_token_auth_create_mangs.rb +49 -0
  166. data/test/dummy/tmp/generators/db/migrate/20210305040222_devise_token_auth_create_users.rb +49 -0
  167. data/test/factories/users.rb +41 -0
  168. data/test/lib/devise_token_auth/blacklist_test.rb +19 -0
  169. data/test/lib/devise_token_auth/rails/custom_routes_test.rb +29 -0
  170. data/test/lib/devise_token_auth/rails/routes_test.rb +87 -0
  171. data/test/lib/devise_token_auth/token_factory_test.rb +191 -0
  172. data/test/lib/devise_token_auth/url_test.rb +26 -0
  173. data/test/lib/generators/devise_token_auth/install_generator_test.rb +217 -0
  174. data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +222 -0
  175. data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +25 -0
  176. data/test/models/concerns/mongoid_support_test.rb +31 -0
  177. data/test/models/concerns/tokens_serialization_test.rb +104 -0
  178. data/test/models/confirmable_user_test.rb +35 -0
  179. data/test/models/only_email_user_test.rb +29 -0
  180. data/test/models/user_test.rb +224 -0
  181. data/test/support/controllers/routes.rb +43 -0
  182. data/test/test_helper.rb +134 -0
  183. metadata +502 -0
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ConfirmableUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable,
7
+ :validatable, :confirmable
8
+ DeviseTokenAuth.send_confirmation_email = true
9
+ include DeviseTokenAuth::Concerns::User
10
+ DeviseTokenAuth.send_confirmation_email = false
11
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class LockableUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable, :lockable
6
+ include DeviseTokenAuth::Concerns::User
7
+ end
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Mang < ActiveRecord::Base
4
+ include DeviseTokenAuth::Concerns::User
5
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class OnlyEmailUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable
6
+ include DeviseTokenAuth::Concerns::User
7
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ScopedUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable,
7
+ :validatable, :confirmable, :omniauthable
8
+ include DeviseTokenAuth::Concerns::User
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UnconfirmableUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :registerable,
6
+ :recoverable, :rememberable,
7
+ :validatable, :omniauthable
8
+ include DeviseTokenAuth::Concerns::User
9
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ class UnregisterableUser < ActiveRecord::Base
4
+ # Include default devise modules.
5
+ devise :database_authenticatable, :recoverable,
6
+ :validatable, :confirmable,
7
+ :omniauthable
8
+ include DeviseTokenAuth::Concerns::User
9
+ end
@@ -0,0 +1,6 @@
1
+ # frozen_string_literal: true
2
+
3
+ class User < ActiveRecord::Base
4
+ include DeviseTokenAuth::Concerns::User
5
+ include FavoriteColor
6
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class ApplicationController < ActionController::Base
4
+ include DeviseTokenAuth::Concerns::SetUserByToken
5
+
6
+ before_action :configure_permitted_parameters, if: :devise_controller?
7
+
8
+ protected
9
+
10
+ def configure_permitted_parameters
11
+ devise_parameter_sanitizer.permit(:sign_up, keys: [:operating_thetan, :favorite_color])
12
+ devise_parameter_sanitizer.permit(:account_update, keys: [:operating_thetan, :favorite_color, :current_password])
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ class AuthOriginController < ApplicationController
4
+ def redirected
5
+ head :ok
6
+ end
7
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::ConfirmationsController < DeviseTokenAuth::ConfirmationsController
4
+ def show
5
+ super do |resource|
6
+ @show_block_called = true unless resource.nil?
7
+ end
8
+ end
9
+
10
+ def show_block_called?
11
+ @show_block_called == true
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController
4
+ def omniauth_success
5
+ super do |resource|
6
+ @omniauth_success_block_called = true unless resource.nil?
7
+ end
8
+ end
9
+
10
+ def omniauth_success_block_called?
11
+ @omniauth_success_block_called == true
12
+ end
13
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::PasswordsController < DeviseTokenAuth::PasswordsController
4
+ def create
5
+ super do |resource|
6
+ @create_block_called = true unless resource.nil?
7
+ end
8
+ end
9
+
10
+ def edit
11
+ super do |resource|
12
+ @edit_block_called = true unless resource.nil?
13
+ end
14
+ end
15
+
16
+ def update
17
+ super do |resource|
18
+ @update_block_called = true unless resource.nil?
19
+ end
20
+ end
21
+
22
+ def create_block_called?
23
+ @create_block_called == true
24
+ end
25
+
26
+ def edit_block_called?
27
+ @edit_block_called == true
28
+ end
29
+
30
+ def update_block_called?
31
+ @update_block_called == true
32
+ end
33
+
34
+ protected
35
+
36
+ def render_update_success
37
+ render json: { custom: 'foo' }
38
+ end
39
+ end
@@ -0,0 +1,39 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::RegistrationsController < DeviseTokenAuth::RegistrationsController
4
+ def create
5
+ super do |resource|
6
+ @create_block_called = true
7
+ end
8
+ end
9
+
10
+ def update
11
+ super do |resource|
12
+ @update_block_called = true unless resource.nil?
13
+ end
14
+ end
15
+
16
+ def destroy
17
+ super do |resource|
18
+ @destroy_block_called = true unless resource.nil?
19
+ end
20
+ end
21
+
22
+ def create_block_called?
23
+ @create_block_called == true
24
+ end
25
+
26
+ def update_block_called?
27
+ @update_block_called == true
28
+ end
29
+
30
+ def destroy_block_called?
31
+ @destroy_block_called == true
32
+ end
33
+
34
+ protected
35
+
36
+ def render_create_success
37
+ render json: { custom: 'foo' }
38
+ end
39
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::SessionsController < DeviseTokenAuth::SessionsController
4
+ def create
5
+ super do |resource|
6
+ @create_block_called = true unless resource.nil?
7
+ end
8
+ end
9
+
10
+ def destroy
11
+ super do |resource|
12
+ @destroy_block_called = true unless resource.nil?
13
+ end
14
+ end
15
+
16
+ def create_block_called?
17
+ @create_block_called == true
18
+ end
19
+
20
+ def destroy_block_called?
21
+ @destroy_block_called == true
22
+ end
23
+
24
+ protected
25
+
26
+ def render_create_success
27
+ render json: { custom: 'foo' }
28
+ end
29
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ class Custom::TokenValidationsController < DeviseTokenAuth::TokenValidationsController
4
+ def validate_token
5
+ super do |resource|
6
+ @validate_token_block_called = true unless resource.nil?
7
+ end
8
+ end
9
+
10
+ def validate_token_block_called?
11
+ @validate_token_block_called == true
12
+ end
13
+
14
+ protected
15
+
16
+ def render_validate_token_success
17
+ render json: { custom: 'foo' }
18
+ end
19
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DemoGroupController < ApplicationController
4
+ devise_token_auth_group :member, contains: [:user, :mang]
5
+ before_action :authenticate_member!
6
+
7
+ def members_only
8
+ render json: {
9
+ data: {
10
+ message: "Welcome #{current_member.name}",
11
+ user: current_member
12
+ }
13
+ }, status: 200
14
+ end
15
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DemoMangController < ApplicationController
4
+ before_action :authenticate_mang!
5
+
6
+ def members_only
7
+ render json: {
8
+ data: {
9
+ message: "Welcome #{current_mang.name}",
10
+ user: current_mang
11
+ }
12
+ }, status: 200
13
+ end
14
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ class DemoUserController < ApplicationController
4
+ before_action :authenticate_user!
5
+
6
+ def members_only
7
+ render json: {
8
+ data: {
9
+ message: "Welcome #{current_user.name}",
10
+ user: current_user
11
+ }
12
+ }, status: 200
13
+ end
14
+
15
+ def members_only_remove_token
16
+ u = User.find(current_user.id)
17
+ u.tokens = {}
18
+ u.save!
19
+
20
+ render json: {
21
+ data: {
22
+ message: "Welcome #{current_user.name}",
23
+ user: current_user
24
+ }
25
+ }, status: 200
26
+ end
27
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class ConfirmationsController < DeviseTokenAuth::ConfirmationsController
5
+ def show
6
+ @resource = resource_class.confirm_by_token(params[:confirmation_token])
7
+
8
+ if @resource && @resource.id
9
+ token = @resource.create_token
10
+ @resource.save!
11
+
12
+ redirect_header_options = {
13
+ account_confirmation_success: true,
14
+ config: params[:config],
15
+ override_proof: '(^^,)'
16
+ }
17
+ redirect_headers = build_redirect_headers(token.token,
18
+ token.client,
19
+ redirect_header_options)
20
+
21
+ redirect_to(@resource.build_auth_url(params[:redirect_url],
22
+ redirect_headers),
23
+ redirect_options)
24
+ else
25
+ raise ActionController::RoutingError, 'Not Found'
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class OmniauthCallbacksController < DeviseTokenAuth::OmniauthCallbacksController
5
+ DEFAULT_NICKNAME = 'stimpy'.freeze
6
+
7
+ def assign_provider_attrs(user, auth_hash)
8
+ user.assign_attributes(
9
+ nickname: DEFAULT_NICKNAME,
10
+ name: auth_hash['info']['name'],
11
+ image: auth_hash['info']['image'],
12
+ email: auth_hash['info']['email']
13
+ )
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class PasswordsController < DeviseTokenAuth::PasswordsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ # this is where users arrive after visiting the email confirmation link
8
+ def edit
9
+ @resource = resource_class.reset_password_by_token(
10
+ reset_password_token: resource_params[:reset_password_token]
11
+ )
12
+
13
+ if @resource && @resource.id
14
+ token = @resource.create_token
15
+
16
+ # ensure that user is confirmed
17
+ @resource.skip_confirmation! unless @resource.confirmed_at
18
+
19
+ @resource.save!
20
+
21
+ redirect_header_options = {
22
+ override_proof: OVERRIDE_PROOF,
23
+ reset_password: true
24
+ }
25
+ redirect_headers = build_redirect_headers(token.token,
26
+ token.client,
27
+ redirect_header_options)
28
+ redirect_to(@resource.build_auth_url(params[:redirect_url],
29
+ redirect_headers),
30
+ redirect_options)
31
+ else
32
+ raise ActionController::RoutingError, 'Not Found'
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,29 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class RegistrationsController < DeviseTokenAuth::RegistrationsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def update
8
+ if @resource
9
+ if @resource.update(account_update_params)
10
+ render json: {
11
+ status: 'success',
12
+ data: @resource.as_json,
13
+ override_proof: OVERRIDE_PROOF
14
+ }
15
+ else
16
+ render json: {
17
+ status: 'error',
18
+ errors: @resource.errors
19
+ }, status: 422
20
+ end
21
+ else
22
+ render json: {
23
+ status: 'error',
24
+ errors: ['User not found.']
25
+ }, status: 404
26
+ end
27
+ end
28
+ end
29
+ end
@@ -0,0 +1,36 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class SessionsController < DeviseTokenAuth::SessionsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def create
8
+ @resource = resource_class.dta_find_by(email: resource_params[:email])
9
+
10
+ if @resource && valid_params?(:email, resource_params[:email]) && @resource.valid_password?(resource_params[:password]) && @resource.confirmed?
11
+ @token = @resource.create_token
12
+ @resource.save
13
+
14
+ render json: {
15
+ data: @resource.as_json(except: %i[tokens created_at updated_at]),
16
+ override_proof: OVERRIDE_PROOF
17
+ }
18
+
19
+ elsif @resource && (not @resource.confirmed?)
20
+ render json: {
21
+ success: false,
22
+ errors: [
23
+ "A confirmation email was sent to your account at #{@resource.email}. "\
24
+ 'You must follow the instructions in the email before your account '\
25
+ 'can be activated'
26
+ ]
27
+ }, status: 401
28
+
29
+ else
30
+ render json: {
31
+ errors: ['Invalid login credentials. Please try again.']
32
+ }, status: 401
33
+ end
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,23 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Overrides
4
+ class TokenValidationsController < DeviseTokenAuth::TokenValidationsController
5
+ OVERRIDE_PROOF = '(^^,)'.freeze
6
+
7
+ def validate_token
8
+ # @resource will have been set by set_user_by_token concern
9
+ if @resource
10
+ render json: {
11
+ success: true,
12
+ data: @resource.as_json(except: %i[tokens created_at updated_at]),
13
+ override_proof: OVERRIDE_PROOF
14
+ }
15
+ else
16
+ render json: {
17
+ success: false,
18
+ errors: ['Invalid login credentials']
19
+ }, status: 401
20
+ end
21
+ end
22
+ end
23
+ end