simple_token_authentication 1.9.1 → 1.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +11 -7
- data/lib/simple_token_authentication.rb +1 -0
- data/lib/simple_token_authentication/{fallback_authentication_handler.rb → devise_fallback_handler.rb} +7 -1
- data/lib/simple_token_authentication/exception_fallback_handler.rb +9 -0
- data/lib/simple_token_authentication/token_authentication_handler.rb +15 -10
- data/lib/simple_token_authentication/version.rb +1 -1
- data/spec/lib/simple_token_authentication/{fallback_authentication_handler_spec.rb → devise_fallback_handler_spec.rb} +16 -1
- data/spec/lib/simple_token_authentication/exception_fallback_handler_spec.rb +39 -0
- data/spec/lib/simple_token_authentication/token_authentication_handler_spec.rb +64 -29
- data/spec/support/spec_for_fallback_handler_interface.rb +8 -0
- metadata +11 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b4c32afa7541d97b6932847b957f50466ee24038
|
4
|
+
data.tar.gz: 06e65364bd75dd8378af724e6d73a66c22934fdd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e1fd325345ff24df707a2a9c7a9f008d36a41702336e20671011c2ad22565416f8dbcd4f8f75e3fca885f924dddecc52a0b0c094aa77fe66e6e8238d4f9633a
|
7
|
+
data.tar.gz: f46a13bc9a3ef51a55e4ea0d9101d90fa723f139e1a658c2a2dc85a2d71282a3346edb22ceadef0b86d24582a92e13a1e756f674edfd9d0c49bdc123eba1b5b6
|
data/README.md
CHANGED
@@ -101,7 +101,7 @@ class ApplicationController < ActionController::Base # or ActionController::API
|
|
101
101
|
|
102
102
|
# Security note: controllers with no-CSRF protection must disable the Devise fallback,
|
103
103
|
# see #49 for details.
|
104
|
-
# acts_as_token_authentication_handler_for User,
|
104
|
+
# acts_as_token_authentication_handler_for User, fallback: :none
|
105
105
|
|
106
106
|
# The token authentication requirement can target specific controller actions:
|
107
107
|
# acts_as_token_authentication_handler_for User, only: [:create, :update, :destroy]
|
@@ -112,12 +112,12 @@ class ApplicationController < ActionController::Base # or ActionController::API
|
|
112
112
|
# acts_as_token_authentication_handler_for User, if: lambda { |controller| controller.request.format.json? }
|
113
113
|
|
114
114
|
# Several token authenticatable models can be handled by the same controller.
|
115
|
-
# If so, for all of them except the last, the
|
115
|
+
# If so, for all of them except the last, the fallback should be set to :none.
|
116
116
|
#
|
117
117
|
# Please do notice that the order of declaration defines the order of precedence.
|
118
118
|
#
|
119
|
-
# acts_as_token_authentication_handler_for Admin,
|
120
|
-
# acts_as_token_authentication_handler_for SpecialUser,
|
119
|
+
# acts_as_token_authentication_handler_for Admin, fallback: :none
|
120
|
+
# acts_as_token_authentication_handler_for SpecialUser, fallback: :none
|
121
121
|
# acts_as_token_authentication_handler_for User # the last fallback is up to you
|
122
122
|
|
123
123
|
# Aliases can be defined for namespaced models:
|
@@ -236,11 +236,15 @@ X-User-Token 1G8_s7P-V-4MGojaKD7a
|
|
236
236
|
|
237
237
|
In fact, you can mix both methods and provide the `user_email` with one and the `user_token` with the other, even if it would be a freak thing to do.
|
238
238
|
|
239
|
-
### Integration with other authentication methods
|
239
|
+
### Integration with other authentication and authorization methods
|
240
240
|
|
241
|
-
If sign-in is successful, no other authentication method will be run, but if it doesn't (the authentication params were missing, or incorrect) then Devise takes control and tries to `authenticate_user!` with its own modules. That behaviour can however be modified for any controller through the **
|
241
|
+
If sign-in is successful, no other authentication method will be run, but if it doesn't (the authentication params were missing, or incorrect) then Devise takes control and tries to `authenticate_user!` with its own modules. That behaviour can however be modified for any controller through the **fallback** option (which defaults to `fallback: :devise`).
|
242
242
|
|
243
|
-
|
243
|
+
When `fallabck: :exception` is set, then an exception is raised on token authentication failure. The resulting controller behaviour is very similar to the behaviour induced by using the Devise `authenticate_user!` callback instead of `authenticate_user`. That setting allows, for example, to prevent unauthenticated users to accede API controllers while disabling the default fallback to Devise.
|
244
|
+
|
245
|
+
**Important**: Please do notice that controller actions without CSRF protection **must** disable the Devise fallback for [security reasons][csrf] (both `fallback: :exception` and `fallback: :none` will disable the Devise fallback). Since Rails enables CSRF protection by default, this configuration requirement should only affect controllers where you have disabled it specifically, which may be the case of API controllers.
|
246
|
+
|
247
|
+
To use no fallback when token authentication fails, set `fallback: :none`.
|
244
248
|
|
245
249
|
[csrf]: https://github.com/gonzalo-bulnes/simple_token_authentication/issues/49
|
246
250
|
|
@@ -1,5 +1,11 @@
|
|
1
1
|
module SimpleTokenAuthentication
|
2
|
-
class
|
2
|
+
class DeviseFallbackHandler
|
3
|
+
|
4
|
+
# Fallback to the Devise authentication strategies.
|
5
|
+
def fallback!(controller, entity)
|
6
|
+
authenticate_entity!(controller, entity)
|
7
|
+
end
|
8
|
+
|
3
9
|
# Devise authentication is performed through a controller
|
4
10
|
# which includes Devise::Controllers::Helpers
|
5
11
|
# See http://rdoc.info/github/plataformatec/devise/master/\
|
@@ -0,0 +1,9 @@
|
|
1
|
+
module SimpleTokenAuthentication
|
2
|
+
class ExceptionFallbackHandler
|
3
|
+
# Notifies the failure of authentication to Warden in the same DEvise does.
|
4
|
+
# Does result in an HTTP 401 response in a Devise context.
|
5
|
+
def fallback!(controller, entity)
|
6
|
+
throw(:warden, scope: entity.name_underscore.to_sym) if controller.send("current_#{entity.name_underscore}").nil?
|
7
|
+
end
|
8
|
+
end
|
9
|
+
end
|
@@ -2,7 +2,8 @@ require 'active_support/concern'
|
|
2
2
|
require 'devise'
|
3
3
|
|
4
4
|
require 'simple_token_authentication/entities_manager'
|
5
|
-
require 'simple_token_authentication/
|
5
|
+
require 'simple_token_authentication/devise_fallback_handler'
|
6
|
+
require 'simple_token_authentication/exception_fallback_handler'
|
6
7
|
require 'simple_token_authentication/sign_in_handler'
|
7
8
|
require 'simple_token_authentication/token_comparator'
|
8
9
|
|
@@ -14,10 +15,10 @@ module SimpleTokenAuthentication
|
|
14
15
|
private_class_method :define_token_authentication_helpers_for
|
15
16
|
private_class_method :set_token_authentication_hooks
|
16
17
|
private_class_method :entities_manager
|
17
|
-
private_class_method :
|
18
|
+
private_class_method :fallback_handler
|
18
19
|
|
19
20
|
private :authenticate_entity_from_token!
|
20
|
-
private :
|
21
|
+
private :fallback!
|
21
22
|
private :token_correct?
|
22
23
|
private :perform_sign_in!
|
23
24
|
private :token_comparator
|
@@ -34,8 +35,8 @@ module SimpleTokenAuthentication
|
|
34
35
|
end
|
35
36
|
end
|
36
37
|
|
37
|
-
def
|
38
|
-
|
38
|
+
def fallback!(entity, fallback_handler)
|
39
|
+
fallback_handler.fallback!(self, entity)
|
39
40
|
end
|
40
41
|
|
41
42
|
def token_correct?(record, entity, token_comparator)
|
@@ -95,7 +96,7 @@ module SimpleTokenAuthentication
|
|
95
96
|
model_alias = options[:as] || options['as']
|
96
97
|
entity = entities_manager.find_or_create_entity(model, model_alias)
|
97
98
|
options = SimpleTokenAuthentication.parse_options(options)
|
98
|
-
define_token_authentication_helpers_for(entity,
|
99
|
+
define_token_authentication_helpers_for(entity, fallback_handler(options))
|
99
100
|
set_token_authentication_hooks(entity, options)
|
100
101
|
end
|
101
102
|
|
@@ -109,15 +110,19 @@ module SimpleTokenAuthentication
|
|
109
110
|
end
|
110
111
|
|
111
112
|
# Private: Get one (always the same) object which behaves as a fallback authentication handler
|
112
|
-
def
|
113
|
+
def fallback_handler(options)
|
113
114
|
if class_variable_defined?(:@@fallback_authentication_handler)
|
114
115
|
class_variable_get(:@@fallback_authentication_handler)
|
115
116
|
else
|
116
|
-
|
117
|
+
if options[:fallback] == :exception
|
118
|
+
class_variable_set(:@@fallback_authentication_handler, ExceptionFallbackHandler.new)
|
119
|
+
else
|
120
|
+
class_variable_set(:@@fallback_authentication_handler, DeviseFallbackHandler.new)
|
121
|
+
end
|
117
122
|
end
|
118
123
|
end
|
119
124
|
|
120
|
-
def define_token_authentication_helpers_for(entity,
|
125
|
+
def define_token_authentication_helpers_for(entity, fallback_handler)
|
121
126
|
|
122
127
|
method_name = "authenticate_#{entity.name_underscore}_from_token"
|
123
128
|
method_name_bang = method_name + '!'
|
@@ -130,7 +135,7 @@ module SimpleTokenAuthentication
|
|
130
135
|
define_method method_name_bang.to_sym do
|
131
136
|
lambda do |_entity|
|
132
137
|
authenticate_entity_from_token!(_entity)
|
133
|
-
|
138
|
+
fallback!(_entity, fallback_handler)
|
134
139
|
end.call(entity)
|
135
140
|
end
|
136
141
|
end
|
@@ -1,9 +1,11 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
-
describe SimpleTokenAuthentication::
|
3
|
+
describe SimpleTokenAuthentication::DeviseFallbackHandler do
|
4
4
|
|
5
5
|
it_behaves_like 'an authentication handler'
|
6
6
|
|
7
|
+
it_behaves_like 'a fallback handler'
|
8
|
+
|
7
9
|
describe '#authenticate_entity!' do
|
8
10
|
|
9
11
|
it 'delegates authentication to Devise::Controllers::Helpers through a controller', private: true do
|
@@ -21,4 +23,17 @@ describe SimpleTokenAuthentication::FallbackAuthenticationHandler do
|
|
21
23
|
expect(response).to eq 'Devise response.'
|
22
24
|
end
|
23
25
|
end
|
26
|
+
|
27
|
+
describe '#fallback!' do
|
28
|
+
|
29
|
+
it 'does #authenticate_entity!', private: true do
|
30
|
+
entity = double()
|
31
|
+
allow(@entity).to receive_message_chain(:name_underscore).and_return('entity')
|
32
|
+
controller = double()
|
33
|
+
|
34
|
+
expect(subject).to receive(:authenticate_entity!).with(controller, entity)
|
35
|
+
|
36
|
+
subject.send(:fallback!, controller, entity)
|
37
|
+
end
|
38
|
+
end
|
24
39
|
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe SimpleTokenAuthentication::ExceptionFallbackHandler do
|
4
|
+
|
5
|
+
it_behaves_like 'a fallback handler'
|
6
|
+
|
7
|
+
describe '#fallback!' do
|
8
|
+
|
9
|
+
context 'when authentication failed' do
|
10
|
+
|
11
|
+
before(:each) do
|
12
|
+
@entity = double()
|
13
|
+
allow(@entity).to receive_message_chain(:name_underscore).and_return('entity')
|
14
|
+
@controller = double()
|
15
|
+
|
16
|
+
allow(@controller).to receive(:current_entity).and_return(nil)
|
17
|
+
end
|
18
|
+
|
19
|
+
it 'delegates exception throwing to Warden', private: true do
|
20
|
+
expect{ subject.fallback!(@controller, @entity) }.to throw_symbol(:warden, scope: :entity)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context 'when authentication was successful' do
|
25
|
+
|
26
|
+
before(:each) do
|
27
|
+
@entity = double()
|
28
|
+
allow(@entity).to receive_message_chain(:name_underscore).and_return('entity')
|
29
|
+
@controller = double()
|
30
|
+
|
31
|
+
allow(@controller).to receive(:current_entity).and_return('some entity')
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'does not throw any exception', private: true do
|
35
|
+
expect{ subject.fallback!(@controller, @entity) }.not_to throw_symbol(:warden, scope: :entity)
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -78,10 +78,6 @@ describe 'Any class which includes SimpleTokenAuthentication::TokenAuthenticatio
|
|
78
78
|
describe '.entities_manager' do
|
79
79
|
|
80
80
|
before(:each) do
|
81
|
-
# The private tag is here to keep the following examples out of
|
82
|
-
# the public documentation.
|
83
|
-
subject.send :public_class_method, :entities_manager
|
84
|
-
|
85
81
|
allow(SimpleTokenAuthentication::EntitiesManager).to receive(:new)
|
86
82
|
.and_return('a EntitiesManager instance')
|
87
83
|
end
|
@@ -90,65 +86,104 @@ describe 'Any class which includes SimpleTokenAuthentication::TokenAuthenticatio
|
|
90
86
|
|
91
87
|
it 'creates a new EntitiesManager instance', private: true do
|
92
88
|
expect(SimpleTokenAuthentication::EntitiesManager).to receive(:new)
|
93
|
-
expect(subject.entities_manager).to eq 'a EntitiesManager instance'
|
89
|
+
expect(subject.send(:entities_manager)).to eq 'a EntitiesManager instance'
|
94
90
|
end
|
95
91
|
end
|
96
92
|
|
97
93
|
context 'when a EntitiesManager instance was already created' do
|
98
94
|
|
99
95
|
before(:each) do
|
100
|
-
subject.entities_manager
|
96
|
+
subject.send(:entities_manager)
|
101
97
|
# let's make any new EntitiesManager distinct from the first
|
102
98
|
allow(SimpleTokenAuthentication::EntitiesManager).to receive(:new)
|
103
99
|
.and_return('another EntitiesManager instance')
|
104
100
|
end
|
105
101
|
|
106
102
|
it 'returns that instance', private: true do
|
107
|
-
expect(subject.entities_manager).to eq 'a EntitiesManager instance'
|
103
|
+
expect(subject.send(:entities_manager)).to eq 'a EntitiesManager instance'
|
108
104
|
end
|
109
105
|
|
110
106
|
it 'does not create a new EntitiesManager instance', private: true do
|
111
107
|
expect(SimpleTokenAuthentication::EntitiesManager).not_to receive(:new)
|
112
|
-
expect(subject.entities_manager).not_to eq 'another EntitiesManager instance'
|
108
|
+
expect(subject.send(:entities_manager)).not_to eq 'another EntitiesManager instance'
|
113
109
|
end
|
114
110
|
end
|
115
111
|
end
|
116
112
|
|
117
|
-
describe '.
|
113
|
+
describe '.fallback_handler' do
|
118
114
|
|
119
115
|
before(:each) do
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
allow(SimpleTokenAuthentication::FallbackAuthenticationHandler).to receive(:new)
|
125
|
-
.and_return('a FallbackAuthenticationHandler instance')
|
116
|
+
allow(SimpleTokenAuthentication::DeviseFallbackHandler).to receive(:new)
|
117
|
+
.and_return('a DeviseFallbackHandler instance')
|
118
|
+
allow(SimpleTokenAuthentication::ExceptionFallbackHandler).to receive(:new)
|
119
|
+
.and_return('an ExceptionFallbackHandler instance')
|
126
120
|
end
|
127
121
|
|
128
|
-
context 'when
|
122
|
+
context 'when the Devise fallback is enabled', fallback_option: true do
|
123
|
+
|
124
|
+
before(:each) do
|
125
|
+
@options = { fallback: :devise }
|
126
|
+
end
|
127
|
+
|
128
|
+
context 'when called for the first time' do
|
129
129
|
|
130
|
-
|
131
|
-
|
132
|
-
|
130
|
+
it 'creates a new DeviseFallbackHandler instance', private: true do
|
131
|
+
expect(SimpleTokenAuthentication::DeviseFallbackHandler).to receive(:new)
|
132
|
+
expect(subject.send(:fallback_handler, @options)).to eq 'a DeviseFallbackHandler instance'
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
context 'when a DeviseFallbackHandler instance was already created' do
|
137
|
+
|
138
|
+
before(:each) do
|
139
|
+
subject.send(:fallback_handler, @options)
|
140
|
+
# let's make any new DeviseFallbackHandler distinct from the first
|
141
|
+
allow(SimpleTokenAuthentication::DeviseFallbackHandler).to receive(:new)
|
142
|
+
.and_return('another DeviseFallbackHandler instance')
|
143
|
+
end
|
144
|
+
|
145
|
+
it 'returns that instance', private: true do
|
146
|
+
expect(subject.send(:fallback_handler, @options)).to eq 'a DeviseFallbackHandler instance'
|
147
|
+
end
|
148
|
+
|
149
|
+
it 'does not create a new DeviseFallbackHandler instance', private: true do
|
150
|
+
expect(SimpleTokenAuthentication::DeviseFallbackHandler).not_to receive(:new)
|
151
|
+
expect(subject.send(:fallback_handler, @options)).not_to eq 'another DeviseFallbackHandler instance'
|
152
|
+
end
|
133
153
|
end
|
134
154
|
end
|
135
155
|
|
136
|
-
context 'when
|
156
|
+
context 'when the Exception fallback is enabled', fallback_option: true do
|
137
157
|
|
138
158
|
before(:each) do
|
139
|
-
|
140
|
-
# let's make any new FallbackAuthenticationHandler distinct from the first
|
141
|
-
allow(SimpleTokenAuthentication::FallbackAuthenticationHandler).to receive(:new)
|
142
|
-
.and_return('another FallbackAuthenticationHandler instance')
|
159
|
+
@options = { fallback: :exception }
|
143
160
|
end
|
144
161
|
|
145
|
-
|
146
|
-
|
162
|
+
context 'when called for the first time' do
|
163
|
+
|
164
|
+
it 'creates a new ExceptionFallbackHandler instance', private: true do
|
165
|
+
expect(SimpleTokenAuthentication::ExceptionFallbackHandler).to receive(:new)
|
166
|
+
expect(subject.send(:fallback_handler, @options)).to eq 'an ExceptionFallbackHandler instance'
|
167
|
+
end
|
147
168
|
end
|
148
169
|
|
149
|
-
|
150
|
-
|
151
|
-
|
170
|
+
context 'when a ExceptionFallbackHandler instance was already created' do
|
171
|
+
|
172
|
+
before(:each) do
|
173
|
+
subject.send(:fallback_handler, @options)
|
174
|
+
# let's make any new ExceptionFallbackHandler distinct from the first
|
175
|
+
allow(SimpleTokenAuthentication::ExceptionFallbackHandler).to receive(:new)
|
176
|
+
.and_return('another ExceptionFallbackHandler instance')
|
177
|
+
end
|
178
|
+
|
179
|
+
it 'returns that instance', private: true do
|
180
|
+
expect(subject.send(:fallback_handler, @options)).to eq 'an ExceptionFallbackHandler instance'
|
181
|
+
end
|
182
|
+
|
183
|
+
it 'does not create a new ExceptionFallbackHandler instance', private: true do
|
184
|
+
expect(SimpleTokenAuthentication::ExceptionFallbackHandler).not_to receive(:new)
|
185
|
+
expect(subject.send(:fallback_handler, @options)).not_to eq 'another ExceptionFallbackHandler instance'
|
186
|
+
end
|
152
187
|
end
|
153
188
|
end
|
154
189
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: simple_token_authentication
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gonzalo Bulnes Guilpain
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-06-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: actionmailer
|
@@ -152,9 +152,10 @@ files:
|
|
152
152
|
- lib/simple_token_authentication/adapters/rails_adapter.rb
|
153
153
|
- lib/simple_token_authentication/adapters/rails_api_adapter.rb
|
154
154
|
- lib/simple_token_authentication/configuration.rb
|
155
|
+
- lib/simple_token_authentication/devise_fallback_handler.rb
|
155
156
|
- lib/simple_token_authentication/entities_manager.rb
|
156
157
|
- lib/simple_token_authentication/entity.rb
|
157
|
-
- lib/simple_token_authentication/
|
158
|
+
- lib/simple_token_authentication/exception_fallback_handler.rb
|
158
159
|
- lib/simple_token_authentication/sign_in_handler.rb
|
159
160
|
- lib/simple_token_authentication/token_authentication_handler.rb
|
160
161
|
- lib/simple_token_authentication/token_comparator.rb
|
@@ -173,10 +174,11 @@ files:
|
|
173
174
|
- spec/lib/simple_token_authentication/adapters/rails_adapter_spec.rb
|
174
175
|
- spec/lib/simple_token_authentication/adapters/rails_api_adapter_spec.rb
|
175
176
|
- spec/lib/simple_token_authentication/configuration_spec.rb
|
177
|
+
- spec/lib/simple_token_authentication/devise_fallback_handler_spec.rb
|
176
178
|
- spec/lib/simple_token_authentication/entities_manager_spec.rb
|
177
179
|
- spec/lib/simple_token_authentication/entity_spec.rb
|
178
180
|
- spec/lib/simple_token_authentication/errors_spec.rb
|
179
|
-
- spec/lib/simple_token_authentication/
|
181
|
+
- spec/lib/simple_token_authentication/exception_fallback_handler_spec.rb
|
180
182
|
- spec/lib/simple_token_authentication/sign_in_handler_spec.rb
|
181
183
|
- spec/lib/simple_token_authentication/token_authentication_handler_spec.rb
|
182
184
|
- spec/lib/simple_token_authentication/token_comparator_spec.rb
|
@@ -188,6 +190,7 @@ files:
|
|
188
190
|
- spec/support/spec_for_authentication_handler_interface.rb
|
189
191
|
- spec/support/spec_for_configuration_option_interface.rb
|
190
192
|
- spec/support/spec_for_entities_manager_interface.rb
|
193
|
+
- spec/support/spec_for_fallback_handler_interface.rb
|
191
194
|
- spec/support/spec_for_sign_in_handler_interface.rb
|
192
195
|
- spec/support/spec_for_token_comparator_interface.rb
|
193
196
|
- spec/support/spec_for_token_generator_interface.rb
|
@@ -212,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
212
215
|
version: '0'
|
213
216
|
requirements: []
|
214
217
|
rubyforge_project:
|
215
|
-
rubygems_version: 2.4.
|
218
|
+
rubygems_version: 2.4.7
|
216
219
|
signing_key:
|
217
220
|
specification_version: 4
|
218
221
|
summary: Simple (but safe) token authentication for Rails apps or API with Devise.
|
@@ -220,12 +223,13 @@ test_files:
|
|
220
223
|
- spec/lib/simple_token_authentication_spec.rb
|
221
224
|
- spec/lib/simple_token_authentication/entities_manager_spec.rb
|
222
225
|
- spec/lib/simple_token_authentication/sign_in_handler_spec.rb
|
223
|
-
- spec/lib/simple_token_authentication/
|
226
|
+
- spec/lib/simple_token_authentication/exception_fallback_handler_spec.rb
|
224
227
|
- spec/lib/simple_token_authentication/token_comparator_spec.rb
|
225
228
|
- spec/lib/simple_token_authentication/configuration_spec.rb
|
226
229
|
- spec/lib/simple_token_authentication/token_generator_spec.rb
|
227
230
|
- spec/lib/simple_token_authentication/acts_as_token_authenticatable_spec.rb
|
228
231
|
- spec/lib/simple_token_authentication/acts_as_token_authentication_handler_spec.rb
|
232
|
+
- spec/lib/simple_token_authentication/devise_fallback_handler_spec.rb
|
229
233
|
- spec/lib/simple_token_authentication/token_authentication_handler_spec.rb
|
230
234
|
- spec/lib/simple_token_authentication/errors_spec.rb
|
231
235
|
- spec/lib/simple_token_authentication/adapters/active_record_adapter_spec.rb
|
@@ -245,6 +249,7 @@ test_files:
|
|
245
249
|
- spec/support/spec_for_adapter.rb
|
246
250
|
- spec/support/specs_for_token_authentication_handler_interface.rb
|
247
251
|
- spec/support/spec_for_token_comparator_interface.rb
|
252
|
+
- spec/support/spec_for_fallback_handler_interface.rb
|
248
253
|
- spec/support/spec_for_configuration_option_interface.rb
|
249
254
|
- spec/support/spec_for_sign_in_handler_interface.rb
|
250
255
|
- spec/support/dummy_classes_helper.rb
|