devise-tokens 1.0.3 → 1.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE +13 -0
- data/README.md +99 -0
- data/Rakefile +42 -0
- data/app/controllers/{devise_tokens → devise_token_auth}/application_controller.rb +8 -6
- data/app/controllers/{devise_tokens → devise_token_auth}/concerns/resource_finder.rb +4 -2
- data/app/controllers/{devise_tokens → devise_token_auth}/concerns/set_user_by_token.rb +24 -23
- data/app/controllers/{devise_tokens → devise_token_auth}/confirmations_controller.rb +9 -7
- data/app/controllers/{devise_tokens → devise_token_auth}/omniauth_callbacks_controller.rb +11 -9
- data/app/controllers/{devise_tokens → devise_token_auth}/passwords_controller.rb +16 -14
- data/app/controllers/{devise_tokens → devise_token_auth}/registrations_controller.rb +13 -11
- data/app/controllers/{devise_tokens → devise_token_auth}/sessions_controller.rb +9 -6
- data/app/controllers/{devise_tokens → devise_token_auth}/token_validations_controller.rb +5 -3
- data/app/controllers/{devise_tokens → devise_token_auth}/unlocks_controller.rb +7 -5
- data/app/models/{devise_tokens → devise_token_auth}/concerns/active_record_support.rb +2 -2
- data/app/models/{devise_tokens → devise_token_auth}/concerns/mongoid_support.rb +1 -1
- data/app/models/{devise_tokens → devise_token_auth}/concerns/tokens_serialization.rb +1 -1
- data/app/models/{devise_tokens → devise_token_auth}/concerns/user.rb +21 -17
- data/app/models/{devise_tokens → devise_token_auth}/concerns/user_omniauth_callbacks.rb +3 -3
- data/app/validators/devise_token_auth_email_validator.rb +2 -2
- data/config/locales/da-DK.yml +1 -1
- data/config/locales/de.yml +1 -1
- data/config/locales/en.yml +1 -1
- data/config/locales/es.yml +1 -1
- data/config/locales/fr.yml +1 -1
- data/config/locales/he.yml +1 -1
- data/config/locales/it.yml +1 -1
- data/config/locales/ja.yml +1 -1
- data/config/locales/nl.yml +1 -1
- data/config/locales/pl.yml +1 -1
- data/config/locales/pt-BR.yml +1 -1
- data/config/locales/pt.yml +1 -1
- data/config/locales/ro.yml +1 -1
- data/config/locales/ru.yml +1 -1
- data/config/locales/sq.yml +1 -1
- data/config/locales/sv.yml +1 -1
- data/config/locales/uk.yml +1 -1
- data/config/locales/vi.yml +1 -1
- data/config/locales/zh-CN.yml +1 -1
- data/config/locales/zh-HK.yml +1 -1
- data/config/locales/zh-TW.yml +1 -1
- data/lib/devise_token_auth.rb +14 -0
- data/lib/{devise_tokens → devise_token_auth}/blacklist.rb +0 -0
- data/lib/{devise_tokens → devise_token_auth}/controllers/helpers.rb +3 -3
- data/lib/{devise_tokens → devise_token_auth}/controllers/url_helpers.rb +2 -2
- data/lib/{devise_tokens → devise_token_auth}/engine.rb +7 -5
- data/lib/{devise_tokens → devise_token_auth}/errors.rb +3 -1
- data/lib/{devise_tokens → devise_token_auth}/rails/routes.rb +15 -15
- data/lib/{devise_tokens → devise_token_auth}/token_factory.rb +19 -19
- data/lib/{devise_tokens → devise_token_auth}/url.rb +4 -2
- data/lib/devise_token_auth/version.rb +5 -0
- data/lib/generators/{devise_tokens → devise_token_auth}/USAGE +9 -9
- data/lib/generators/{devise_tokens → devise_token_auth}/install_generator.rb +9 -9
- data/lib/generators/{devise_tokens → devise_token_auth}/install_generator_helpers.rb +9 -9
- data/lib/generators/{devise_tokens → devise_token_auth}/install_mongoid_generator.rb +5 -5
- data/lib/generators/{devise_tokens → devise_token_auth}/install_views_generator.rb +2 -2
- data/lib/generators/{devise_tokens/templates/devise_tokens.rb → devise_token_auth/templates/devise_token_auth.rb} +2 -2
- data/lib/generators/{devise_tokens/templates/devise_tokens_create_users.rb.erb → devise_token_auth/templates/devise_token_auth_create_users.rb.erb} +1 -1
- data/lib/generators/{devise_tokens → devise_token_auth}/templates/user.rb.erb +2 -2
- data/lib/generators/{devise_tokens → devise_token_auth}/templates/user_mongoid.rb.erb +2 -2
- data/lib/tasks/{devise_tokens_tasks.rake → devise_token_auth_tasks.rake} +2 -2
- data/test/controllers/custom/custom_confirmations_controller_test.rb +25 -0
- data/test/controllers/custom/custom_omniauth_callbacks_controller_test.rb +33 -0
- data/test/controllers/custom/custom_passwords_controller_test.rb +79 -0
- data/test/controllers/custom/custom_registrations_controller_test.rb +63 -0
- data/test/controllers/custom/custom_sessions_controller_test.rb +39 -0
- data/test/controllers/custom/custom_token_validations_controller_test.rb +42 -0
- data/test/controllers/demo_group_controller_test.rb +151 -0
- data/test/controllers/demo_mang_controller_test.rb +284 -0
- data/test/controllers/demo_user_controller_test.rb +629 -0
- data/test/controllers/devise_token_auth/confirmations_controller_test.rb +187 -0
- data/test/controllers/devise_token_auth/omniauth_callbacks_controller_test.rb +441 -0
- data/test/controllers/devise_token_auth/passwords_controller_test.rb +780 -0
- data/test/controllers/devise_token_auth/registrations_controller_test.rb +907 -0
- data/test/controllers/devise_token_auth/sessions_controller_test.rb +503 -0
- data/test/controllers/devise_token_auth/token_validations_controller_test.rb +102 -0
- data/test/controllers/devise_token_auth/unlocks_controller_test.rb +196 -0
- data/test/controllers/overrides/confirmations_controller_test.rb +47 -0
- data/test/controllers/overrides/omniauth_callbacks_controller_test.rb +53 -0
- data/test/controllers/overrides/passwords_controller_test.rb +64 -0
- data/test/controllers/overrides/registrations_controller_test.rb +46 -0
- data/test/controllers/overrides/sessions_controller_test.rb +35 -0
- data/test/controllers/overrides/token_validations_controller_test.rb +43 -0
- data/test/dummy/README.rdoc +28 -0
- data/test/dummy/app/active_record/lockable_user.rb +7 -0
- data/test/dummy/app/active_record/mang.rb +5 -0
- data/test/dummy/app/active_record/only_email_user.rb +7 -0
- data/test/dummy/app/active_record/scoped_user.rb +9 -0
- data/test/dummy/app/active_record/unconfirmable_user.rb +9 -0
- data/test/dummy/app/active_record/unregisterable_user.rb +9 -0
- data/test/dummy/app/active_record/user.rb +6 -0
- data/test/dummy/app/controllers/application_controller.rb +18 -0
- data/test/dummy/app/controllers/auth_origin_controller.rb +7 -0
- data/test/dummy/app/controllers/custom/confirmations_controller.rb +13 -0
- data/test/dummy/app/controllers/custom/omniauth_callbacks_controller.rb +13 -0
- data/test/dummy/app/controllers/custom/passwords_controller.rb +39 -0
- data/test/dummy/app/controllers/custom/registrations_controller.rb +39 -0
- data/test/dummy/app/controllers/custom/sessions_controller.rb +29 -0
- data/test/dummy/app/controllers/custom/token_validations_controller.rb +19 -0
- data/test/dummy/app/controllers/demo_group_controller.rb +15 -0
- data/test/dummy/app/controllers/demo_mang_controller.rb +14 -0
- data/test/dummy/app/controllers/demo_user_controller.rb +27 -0
- data/test/dummy/app/controllers/overrides/confirmations_controller.rb +28 -0
- data/test/dummy/app/controllers/overrides/omniauth_callbacks_controller.rb +16 -0
- data/test/dummy/app/controllers/overrides/passwords_controller.rb +35 -0
- data/test/dummy/app/controllers/overrides/registrations_controller.rb +29 -0
- data/test/dummy/app/controllers/overrides/sessions_controller.rb +36 -0
- data/test/dummy/app/controllers/overrides/token_validations_controller.rb +23 -0
- data/test/dummy/app/helpers/application_helper.rb +1058 -0
- data/test/dummy/app/models/concerns/favorite_color.rb +19 -0
- data/test/dummy/app/mongoid/lockable_user.rb +38 -0
- data/test/dummy/app/mongoid/mang.rb +46 -0
- data/test/dummy/app/mongoid/only_email_user.rb +33 -0
- data/test/dummy/app/mongoid/scoped_user.rb +50 -0
- data/test/dummy/app/mongoid/unconfirmable_user.rb +44 -0
- data/test/dummy/app/mongoid/unregisterable_user.rb +47 -0
- data/test/dummy/app/mongoid/user.rb +49 -0
- data/test/dummy/app/views/layouts/application.html.erb +14 -0
- data/test/dummy/config.ru +18 -0
- data/test/dummy/config/application.rb +48 -0
- data/test/dummy/config/application.yml.bk +0 -0
- data/test/dummy/config/boot.rb +11 -0
- data/test/dummy/config/environment.rb +7 -0
- data/test/dummy/config/environments/development.rb +46 -0
- data/test/dummy/config/environments/production.rb +84 -0
- data/test/dummy/config/environments/test.rb +50 -0
- data/test/dummy/config/initializers/assets.rb +10 -0
- data/test/dummy/config/initializers/backtrace_silencers.rb +9 -0
- data/test/dummy/config/initializers/cookies_serializer.rb +5 -0
- data/test/dummy/config/initializers/devise.rb +290 -0
- data/test/dummy/config/initializers/devise_token_auth.rb +55 -0
- data/test/dummy/config/initializers/figaro.rb +3 -0
- data/test/dummy/config/initializers/filter_parameter_logging.rb +6 -0
- data/test/dummy/config/initializers/inflections.rb +18 -0
- data/test/dummy/config/initializers/mime_types.rb +6 -0
- data/test/dummy/config/initializers/omniauth.rb +10 -0
- data/test/dummy/config/initializers/session_store.rb +5 -0
- data/test/dummy/config/initializers/wrap_parameters.rb +16 -0
- data/test/dummy/config/routes.rb +55 -0
- data/test/dummy/config/spring.rb +3 -0
- data/test/dummy/db/migrate/20140715061447_devise_token_auth_create_users.rb +58 -0
- data/test/dummy/db/migrate/20140715061805_devise_token_auth_create_mangs.rb +57 -0
- data/test/dummy/db/migrate/20140829044006_add_operating_thetan_to_user.rb +8 -0
- data/test/dummy/db/migrate/20140916224624_add_favorite_color_to_mangs.rb +7 -0
- data/test/dummy/db/migrate/20141222035835_devise_token_auth_create_only_email_users.rb +55 -0
- data/test/dummy/db/migrate/20141222053502_devise_token_auth_create_unregisterable_users.rb +56 -0
- data/test/dummy/db/migrate/20150708104536_devise_token_auth_create_unconfirmable_users.rb +56 -0
- data/test/dummy/db/migrate/20160103235141_devise_token_auth_create_scoped_users.rb +56 -0
- data/test/dummy/db/migrate/20160629184441_devise_token_auth_create_lockable_users.rb +56 -0
- data/test/dummy/db/schema.rb +173 -0
- data/test/dummy/lib/migration_database_helper.rb +43 -0
- data/test/factories/users.rb +40 -0
- data/test/lib/devise_token_auth/blacklist_test.rb +11 -0
- data/test/lib/devise_token_auth/token_factory_test.rb +191 -0
- data/test/lib/devise_token_auth/url_test.rb +26 -0
- data/test/lib/generators/devise_token_auth/install_generator_test.rb +217 -0
- data/test/lib/generators/devise_token_auth/install_generator_with_namespace_test.rb +222 -0
- data/test/lib/generators/devise_token_auth/install_views_generator_test.rb +25 -0
- data/test/models/concerns/mongoid_support_test.rb +31 -0
- data/test/models/concerns/tokens_serialization_test.rb +70 -0
- data/test/models/only_email_user_test.rb +29 -0
- data/test/models/user_test.rb +108 -0
- data/test/support/controllers/routes.rb +43 -0
- data/test/test_helper.rb +103 -0
- metadata +246 -37
- data/lib/devise_tokens.rb +0 -14
- data/lib/devise_tokens/version.rb +0 -3
data/config/locales/ro.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
ro:
|
2
|
-
|
2
|
+
devise_token_auth:
|
3
3
|
sessions:
|
4
4
|
not_confirmed: "Un email de confirmare a fost trimis către contul tău la '%{email}'. Pentru a-ți activa contul este necesar să urmezi instrucțiunile din acesta."
|
5
5
|
bad_credentials: "Datele introduse sunt incorecte. Te rugăm să incerci din nou."
|
data/config/locales/ru.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
ru:
|
2
|
-
|
2
|
+
devise_token_auth:
|
3
3
|
sessions:
|
4
4
|
not_confirmed: "Письмо с подтверждением Вашей учетной записи '%{email}' отправлено на электронную почту. Вы должны следовать инструкциям, приведенным в письме, прежде чем Ваша учетная запись сможет быть активирована"
|
5
5
|
bad_credentials: "Неверные логин или пароль. Пожалуйста, попробуйте еще раз."
|
data/config/locales/sq.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
sq:
|
2
|
-
|
2
|
+
devise_token_auth:
|
3
3
|
sessions:
|
4
4
|
not_confirmed: "Një email konfirmues është dërguar tek llogaria juaj '%{email}'. Ju duhet të ndiqni udhëzimet në email përpara se të bëhet aktivizimi i llogarisë tuaj."
|
5
5
|
bad_credentials: "Kredencialet e qasjes nuk janë në rregull. Ju lutemi, provoni përsëri."
|
data/config/locales/sv.yml
CHANGED
data/config/locales/uk.yml
CHANGED
data/config/locales/vi.yml
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
vi:
|
2
|
-
|
2
|
+
devise_token_auth:
|
3
3
|
sessions:
|
4
4
|
not_confirmed: "Mail xác nhận tài khoản đã được gửi tới tài khoản của bạn tại '%{email}'. Bận cần phải làm theo những hướng dẫn trong email để tài khoản có thể xác nhận"
|
5
5
|
bad_credentials: "Thông tin đăng nhập không hợp lệ. Xin thử lại."
|
data/config/locales/zh-CN.yml
CHANGED
data/config/locales/zh-HK.yml
CHANGED
data/config/locales/zh-TW.yml
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'devise'
|
4
|
+
|
5
|
+
module DeviseTokenAuth
|
6
|
+
end
|
7
|
+
|
8
|
+
require 'devise_token_auth/engine'
|
9
|
+
require 'devise_token_auth/controllers/helpers'
|
10
|
+
require 'devise_token_auth/controllers/url_helpers'
|
11
|
+
require 'devise_token_auth/url'
|
12
|
+
require 'devise_token_auth/errors'
|
13
|
+
require 'devise_token_auth/blacklist'
|
14
|
+
require 'devise_token_auth/token_factory'
|
File without changes
|
@@ -1,6 +1,6 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
|
2
|
-
|
3
|
-
module DeviseTokens
|
3
|
+
module DeviseTokenAuth
|
4
4
|
module Controllers
|
5
5
|
module Helpers
|
6
6
|
extend ActiveSupport::Concern
|
@@ -28,7 +28,7 @@ module DeviseTokens
|
|
28
28
|
# before_action ->{ authenticate_blogger! :admin } # Redirects to the admin login page
|
29
29
|
# current_blogger :user # Preferably returns a User if one is signed in
|
30
30
|
#
|
31
|
-
def
|
31
|
+
def devise_token_auth_group(group_name, opts = {})
|
32
32
|
mappings = "[#{opts[:contains].map { |m| ":#{m}" }.join(',')}]"
|
33
33
|
|
34
34
|
class_eval <<-METHODS, __FILE__, __LINE__ + 1
|
@@ -1,11 +1,13 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
|
-
|
3
|
+
require 'devise_token_auth/rails/routes'
|
4
|
+
|
5
|
+
module DeviseTokenAuth
|
4
6
|
class Engine < ::Rails::Engine
|
5
|
-
isolate_namespace
|
7
|
+
isolate_namespace DeviseTokenAuth
|
6
8
|
|
7
|
-
initializer '
|
8
|
-
Devise.helpers <<
|
9
|
+
initializer 'devise_token_auth.url_helpers' do
|
10
|
+
Devise.helpers << DeviseTokenAuth::Controllers::Helpers
|
9
11
|
end
|
10
12
|
end
|
11
13
|
|
@@ -1,20 +1,20 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module ActionDispatch::Routing
|
4
4
|
class Mapper
|
5
|
-
def
|
5
|
+
def mount_devise_token_auth_for(resource, opts)
|
6
6
|
# ensure objects exist to simplify attr checks
|
7
7
|
opts[:controllers] ||= {}
|
8
8
|
opts[:skip] ||= []
|
9
9
|
|
10
10
|
# check for ctrl overrides, fall back to defaults
|
11
|
-
sessions_ctrl = opts[:controllers][:sessions] || '
|
12
|
-
registrations_ctrl = opts[:controllers][:registrations] || '
|
13
|
-
passwords_ctrl = opts[:controllers][:passwords] || '
|
14
|
-
confirmations_ctrl = opts[:controllers][:confirmations] || '
|
15
|
-
token_validations_ctrl = opts[:controllers][:token_validations] || '
|
16
|
-
omniauth_ctrl = opts[:controllers][:omniauth_callbacks] || '
|
17
|
-
unlocks_ctrl = opts[:controllers][:unlocks] || '
|
11
|
+
sessions_ctrl = opts[:controllers][:sessions] || 'devise_token_auth/sessions'
|
12
|
+
registrations_ctrl = opts[:controllers][:registrations] || 'devise_token_auth/registrations'
|
13
|
+
passwords_ctrl = opts[:controllers][:passwords] || 'devise_token_auth/passwords'
|
14
|
+
confirmations_ctrl = opts[:controllers][:confirmations] || 'devise_token_auth/confirmations'
|
15
|
+
token_validations_ctrl = opts[:controllers][:token_validations] || 'devise_token_auth/token_validations'
|
16
|
+
omniauth_ctrl = opts[:controllers][:omniauth_callbacks] || 'devise_token_auth/omniauth_callbacks'
|
17
|
+
unlocks_ctrl = opts[:controllers][:unlocks] || 'devise_token_auth/unlocks'
|
18
18
|
|
19
19
|
# define devise controller mappings
|
20
20
|
controllers = { sessions: sessions_ctrl,
|
@@ -63,8 +63,8 @@ module ActionDispatch::Routing
|
|
63
63
|
match "#{full_path}/failure", controller: omniauth_ctrl, action: 'omniauth_failure', via: [:get]
|
64
64
|
match "#{full_path}/:provider/callback", controller: omniauth_ctrl, action: 'omniauth_success', via: [:get]
|
65
65
|
|
66
|
-
match "#{
|
67
|
-
match "#{
|
66
|
+
match "#{DeviseTokenAuth.omniauth_prefix}/:provider/callback", controller: omniauth_ctrl, action: 'redirect_callbacks', via: [:get, :post]
|
67
|
+
match "#{DeviseTokenAuth.omniauth_prefix}/failure", controller: omniauth_ctrl, action: 'omniauth_failure', via: [:get, :post]
|
68
68
|
|
69
69
|
# preserve the resource class thru oauth authentication by setting name of
|
70
70
|
# resource as "resource_class" param
|
@@ -76,15 +76,15 @@ module ActionDispatch::Routing
|
|
76
76
|
qs['resource_class'] = [resource]
|
77
77
|
qs['namespace_name'] = [namespace_name] if namespace_name
|
78
78
|
|
79
|
-
set_omniauth_path_prefix!(
|
79
|
+
set_omniauth_path_prefix!(DeviseTokenAuth.omniauth_prefix)
|
80
80
|
|
81
81
|
redirect_params = {}.tap { |hash| qs.each{ |k, v| hash[k] = v.first } }
|
82
82
|
|
83
|
-
if
|
83
|
+
if DeviseTokenAuth.redirect_whitelist
|
84
84
|
redirect_url = request.params['auth_origin_url']
|
85
|
-
unless
|
85
|
+
unless DeviseTokenAuth::Url.whitelisted?(redirect_url)
|
86
86
|
message = I18n.t(
|
87
|
-
'
|
87
|
+
'devise_token_auth.registrations.redirect_url_not_allowed',
|
88
88
|
redirect_url: redirect_url
|
89
89
|
)
|
90
90
|
redirect_params['message'] = message
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'bcrypt'
|
2
2
|
|
3
|
-
module
|
3
|
+
module DeviseTokenAuth
|
4
4
|
# A token management factory which allow generate token objects and check them.
|
5
5
|
module TokenFactory
|
6
6
|
# For BCrypt::Password class see:
|
@@ -8,11 +8,11 @@ module DeviseTokens
|
|
8
8
|
|
9
9
|
# Creates a token instance. Takes an optional client, lifespan and cost options.
|
10
10
|
# Example:
|
11
|
-
#
|
12
|
-
# => #<struct
|
11
|
+
# DeviseTokenAuth::TokenFactory.create
|
12
|
+
# => #<struct DeviseTokenAuth::TokenFactory::Token client="tElcgkdZ7f9XEa0unZhrYQ", token="rAMcWOs0-mGHFMnIgJD2cA", token_hash="$2a$10$wrsdlHVRGlYW11wfImxU..jr0Ux3bHo/qbXcSfgp8zmvVUNHosita", expiry=1518982690>
|
13
13
|
#
|
14
|
-
#
|
15
|
-
# => #<struct
|
14
|
+
# DeviseTokenAuth::TokenFactory.create(lifespan: 10, cost: 4)
|
15
|
+
# => #<struct DeviseTokenAuth::TokenFactory::Token client="5qleT7_t9JPVcX9xmxkVYA", token="RBXX43u4xXNSO-fr2N_4pA", token_hash="$2a$04$9gpCaoFbu2dUKxU3qiTgluHX7jj9UzS.jq1QW0EkQmoaxARo1WxTy", expiry=1517773268>
|
16
16
|
def self.create(client: nil, lifespan: nil, cost: nil)
|
17
17
|
# obj_client = client.nil? ? client() : client
|
18
18
|
obj_client = client || client()
|
@@ -25,7 +25,7 @@ module DeviseTokens
|
|
25
25
|
|
26
26
|
# Generates a random URL-safe client.
|
27
27
|
# Example:
|
28
|
-
#
|
28
|
+
# DeviseTokenAuth::TokenFactory.client
|
29
29
|
# => "zNf0pNP5iGfuBItZJGCseQ"
|
30
30
|
def self.client
|
31
31
|
secure_string
|
@@ -33,7 +33,7 @@ module DeviseTokens
|
|
33
33
|
|
34
34
|
# Generates a random URL-safe token.
|
35
35
|
# Example:
|
36
|
-
#
|
36
|
+
# DeviseTokenAuth::TokenFactory.token
|
37
37
|
# => "6Bqs4K9x8ChLmZogvruF3A"
|
38
38
|
def self.token
|
39
39
|
secure_string
|
@@ -43,30 +43,30 @@ module DeviseTokens
|
|
43
43
|
# the default value is used. The possible cost value is within range from 4 to 31.
|
44
44
|
# It is recommended to not use a value more than 10.
|
45
45
|
# Example:
|
46
|
-
#
|
46
|
+
# DeviseTokenAuth::TokenFactory.token_hash("_qxAxmc-biQLiYRHsmwd5Q")
|
47
47
|
# => "$2a$10$6/cTAtQ3CBLfpkeHW7dlt.PD2aVCbFRN5vDDJUUhGsZ6pzYFlh4Me"
|
48
48
|
#
|
49
|
-
#
|
49
|
+
# DeviseTokenAuth::TokenFactory.token_hash("_qxAxmc-biQLiYRHsmwd5Q", 4)
|
50
50
|
# => "$2a$04$RkIrosbdRtuet2eUk3si8eS4ufeNpiPc/rSSsfpniRK8ogM5YFOWS"
|
51
51
|
def self.token_hash(token, cost = nil)
|
52
|
-
cost ||=
|
52
|
+
cost ||= DeviseTokenAuth.token_cost
|
53
53
|
BCrypt::Password.create(token, cost: cost)
|
54
54
|
end
|
55
55
|
|
56
56
|
# Returns the value of time as an integer number of seconds. Takes one argument.
|
57
57
|
# Example:
|
58
|
-
#
|
58
|
+
# DeviseTokenAuth::TokenFactory.expiry
|
59
59
|
# => 1518983359
|
60
|
-
#
|
60
|
+
# DeviseTokenAuth::TokenFactory.expiry(10)
|
61
61
|
# => 1517773781
|
62
62
|
def self.expiry(lifespan = nil)
|
63
|
-
lifespan ||=
|
63
|
+
lifespan ||= DeviseTokenAuth.token_lifespan
|
64
64
|
(Time.zone.now + lifespan).to_i
|
65
65
|
end
|
66
66
|
|
67
67
|
# Generates a random URL-safe string.
|
68
68
|
# Example:
|
69
|
-
#
|
69
|
+
# DeviseTokenAuth::TokenFactory.secure_string
|
70
70
|
# => "ADBoIaqXsEDnxIpOuumrTA"
|
71
71
|
def self.secure_string
|
72
72
|
# https://ruby-doc.org/stdlib-2.5.0/libdoc/securerandom/rdoc/Random/Formatter.html#method-i-urlsafe_base64
|
@@ -76,7 +76,7 @@ module DeviseTokens
|
|
76
76
|
# Returns true if token hash is a valid token hash.
|
77
77
|
# Example:
|
78
78
|
# token_hash = "$2a$10$ArjX0tskRIa5Z/Tmapy59OCiAXLStfhrCiaDz.8fCb6hnX1gJ0p/2"
|
79
|
-
#
|
79
|
+
# DeviseTokenAuth::TokenFactory.valid_token_hash?(token_hash)
|
80
80
|
# => true
|
81
81
|
def self.valid_token_hash?(token_hash)
|
82
82
|
!!BCrypt::Password.valid_hash?(token_hash)
|
@@ -86,7 +86,7 @@ module DeviseTokens
|
|
86
86
|
# Example:
|
87
87
|
# token = "4wZ9gcc900rMQD1McpcSNA"
|
88
88
|
# token_hash = "$2a$10$ArjX0tskRIa5Z/Tmapy59OCiAXLStfhrCiaDz.8fCb6hnX1gJ0p/2"
|
89
|
-
#
|
89
|
+
# DeviseTokenAuth::TokenFactory.token_hash_is_token?(token_hash, token)
|
90
90
|
# => true
|
91
91
|
def self.token_hash_is_token?(token_hash, token)
|
92
92
|
BCrypt::Password.new(token_hash).is_password?(token)
|
@@ -96,8 +96,8 @@ module DeviseTokens
|
|
96
96
|
|
97
97
|
# Creates a token instance with instance variables equal nil.
|
98
98
|
# Example:
|
99
|
-
#
|
100
|
-
# => #<struct
|
99
|
+
# DeviseTokenAuth::TokenFactory.new
|
100
|
+
# => #<struct DeviseTokenAuth::TokenFactory::Token client=nil, token=nil, token_hash=nil, expiry=nil>
|
101
101
|
def self.new
|
102
102
|
Token.new
|
103
103
|
end
|
@@ -108,7 +108,7 @@ module DeviseTokens
|
|
108
108
|
# token.clear!
|
109
109
|
# => true
|
110
110
|
# token
|
111
|
-
# => #<struct
|
111
|
+
# => #<struct DeviseTokenAuth::TokenFactory::Token client=nil, token=nil, token_hash=nil, expiry=nil>
|
112
112
|
def clear!
|
113
113
|
size.times { |i| self[i] = nil }
|
114
114
|
true
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module DeviseTokenAuth::Url
|
2
4
|
|
3
5
|
def self.generate(url, params = {})
|
4
6
|
uri = URI(url)
|
@@ -15,7 +17,7 @@ module DeviseTokens::Url
|
|
15
17
|
|
16
18
|
def self.whitelisted?(url)
|
17
19
|
url.nil? || \
|
18
|
-
!!
|
20
|
+
!!DeviseTokenAuth.redirect_whitelist.find do |pattern|
|
19
21
|
!!Wildcat.new(pattern).match(url)
|
20
22
|
end
|
21
23
|
end
|
@@ -1,31 +1,31 @@
|
|
1
1
|
Description:
|
2
2
|
This generator will install all the necessary configuration and migration
|
3
|
-
files for the
|
4
|
-
https://github.com/lynndylanhurley/
|
3
|
+
files for the devise_token_auth gem. See
|
4
|
+
https://github.com/lynndylanhurley/devise_token_auth for more information.
|
5
5
|
|
6
6
|
Arguments:
|
7
7
|
USER_CLASS # The name of the class to use for user authentication. Default is
|
8
8
|
# 'User'
|
9
9
|
MOUNT_PATH # The path at which to mount the authentication routes. Default is
|
10
10
|
# 'auth'. More detail documentation is here:
|
11
|
-
# https://github.com/lynndylanhurley/
|
11
|
+
# https://github.com/lynndylanhurley/devise_token_auth#usage-tldr
|
12
12
|
|
13
13
|
Example:
|
14
|
-
rails generate
|
14
|
+
rails generate devise_token_auth:install User auth
|
15
15
|
|
16
16
|
This will create:
|
17
|
-
config/initializers/
|
18
|
-
db/migrate/<%= Time.zone.now.utc.strftime("%Y%m%d%H%M%S") %>
|
17
|
+
config/initializers/devise_token_auth.rb
|
18
|
+
db/migrate/<%= Time.zone.now.utc.strftime("%Y%m%d%H%M%S") %>_create_devise_token_auth_create_users.rb
|
19
19
|
app/models/user.rb
|
20
20
|
|
21
21
|
If 'app/models/user.rb' already exists, the following line will be inserted
|
22
22
|
after the class definition:
|
23
|
-
include
|
23
|
+
include DeviseTokenAuth::Concerns::User
|
24
24
|
|
25
25
|
The following line will be inserted into your application controller at
|
26
26
|
app/controllers/application_controller.rb:
|
27
|
-
include
|
27
|
+
include DeviseTokenAuth::Concerns::SetUserByToken
|
28
28
|
|
29
29
|
The following line will be inserted at the top of 'config/routes.rb' if it
|
30
30
|
does not already exist:
|
31
|
-
|
31
|
+
mount_devise_token_auth_for "User", at: 'auth'
|
@@ -1,21 +1,21 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require_relative 'install_generator_helpers'
|
4
4
|
|
5
|
-
module
|
5
|
+
module DeviseTokenAuth
|
6
6
|
class InstallGenerator < Rails::Generators::Base
|
7
7
|
include Rails::Generators::Migration
|
8
|
-
include
|
8
|
+
include DeviseTokenAuth::InstallGeneratorHelpers
|
9
9
|
|
10
10
|
class_option :primary_key_type, type: :string, desc: 'The type for primary key'
|
11
11
|
|
12
12
|
def copy_migrations
|
13
|
-
if self.class.migration_exists?('db/migrate', "
|
14
|
-
say_status('skipped', "Migration '
|
13
|
+
if self.class.migration_exists?('db/migrate', "devise_token_auth_create_#{user_class.pluralize.gsub('::','').underscore}")
|
14
|
+
say_status('skipped', "Migration 'devise_token_auth_create_#{user_class.pluralize.gsub('::','').underscore}' already exists")
|
15
15
|
else
|
16
16
|
migration_template(
|
17
|
-
'
|
18
|
-
"db/migrate/
|
17
|
+
'devise_token_auth_create_users.rb.erb',
|
18
|
+
"db/migrate/devise_token_auth_create_#{user_class.pluralize.gsub('::','').underscore}.rb"
|
19
19
|
)
|
20
20
|
end
|
21
21
|
end
|
@@ -23,7 +23,7 @@ module DeviseTokens
|
|
23
23
|
def create_user_model
|
24
24
|
fname = "app/models/#{user_class.underscore}.rb"
|
25
25
|
if File.exist?(File.join(destination_root, fname))
|
26
|
-
inclusion = 'include
|
26
|
+
inclusion = 'include DeviseTokenAuth::Concerns::User'
|
27
27
|
unless parse_file_for_line(fname, inclusion)
|
28
28
|
|
29
29
|
active_record_needle = (Rails::VERSION::MAJOR == 5) ? 'ApplicationRecord' : 'ActiveRecord::Base'
|
@@ -32,7 +32,7 @@ module DeviseTokens
|
|
32
32
|
devise :database_authenticatable, :registerable,
|
33
33
|
:recoverable, :rememberable, :trackable, :validatable,
|
34
34
|
:confirmable, :omniauthable
|
35
|
-
include
|
35
|
+
include DeviseTokenAuth::Concerns::User
|
36
36
|
RUBY
|
37
37
|
end
|
38
38
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
module
|
1
|
+
module DeviseTokenAuth
|
2
2
|
module InstallGeneratorHelpers
|
3
3
|
class << self
|
4
4
|
def included(mod)
|
@@ -9,38 +9,38 @@ module DeviseTokens
|
|
9
9
|
argument :mount_path, type: :string, default: 'auth'
|
10
10
|
|
11
11
|
def create_initializer_file
|
12
|
-
copy_file('
|
12
|
+
copy_file('devise_token_auth.rb', 'config/initializers/devise_token_auth.rb')
|
13
13
|
end
|
14
14
|
|
15
15
|
def include_controller_concerns
|
16
16
|
fname = 'app/controllers/application_controller.rb'
|
17
|
-
line = 'include
|
17
|
+
line = 'include DeviseTokenAuth::Concerns::SetUserByToken'
|
18
18
|
|
19
19
|
if File.exist?(File.join(destination_root, fname))
|
20
20
|
if parse_file_for_line(fname, line)
|
21
21
|
say_status('skipped', 'Concern is already included in the application controller.')
|
22
22
|
elsif is_rails_api?
|
23
23
|
inject_into_file fname, after: "class ApplicationController < ActionController::API\n" do <<-'RUBY'
|
24
|
-
include
|
24
|
+
include DeviseTokenAuth::Concerns::SetUserByToken
|
25
25
|
RUBY
|
26
26
|
end
|
27
27
|
else
|
28
28
|
inject_into_file fname, after: "class ApplicationController < ActionController::Base\n" do <<-'RUBY'
|
29
|
-
include
|
29
|
+
include DeviseTokenAuth::Concerns::SetUserByToken
|
30
30
|
RUBY
|
31
31
|
end
|
32
32
|
end
|
33
33
|
else
|
34
|
-
say_status('skipped', "app/controllers/application_controller.rb not found. Add 'include
|
34
|
+
say_status('skipped', "app/controllers/application_controller.rb not found. Add 'include DeviseTokenAuth::Concerns::SetUserByToken' to any controllers that require authentication.")
|
35
35
|
end
|
36
36
|
end
|
37
37
|
|
38
38
|
def add_route_mount
|
39
39
|
f = 'config/routes.rb'
|
40
|
-
str = "
|
40
|
+
str = "mount_devise_token_auth_for '#{user_class}', at: '#{mount_path}'"
|
41
41
|
|
42
42
|
if File.exist?(File.join(destination_root, f))
|
43
|
-
line = parse_file_for_line(f, '
|
43
|
+
line = parse_file_for_line(f, 'mount_devise_token_auth_for')
|
44
44
|
|
45
45
|
if line
|
46
46
|
existing_user_class = true
|
@@ -63,7 +63,7 @@ module DeviseTokens
|
|
63
63
|
end
|
64
64
|
end
|
65
65
|
else
|
66
|
-
say_status('skipped', "config/routes.rb not found. Add \"
|
66
|
+
say_status('skipped', "config/routes.rb not found. Add \"mount_devise_token_auth_for '#{user_class}', at: '#{mount_path}'\" to your routes file.")
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|