omniauth-identity 3.0.5 → 3.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/omniauth-identity/version.rb +1 -1
- data/lib/omniauth/strategies/identity.rb +13 -8
- data/spec/omniauth/strategies/identity_spec.rb +118 -4
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 469e5989686f13b8e924e7efc5cfbd2f205a13d45da6410f454f2d0b14e884ea
|
4
|
+
data.tar.gz: 38424bbbc877d8d18aa4a35916697c59b31379809e05e5ff620de0089f53759c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1458cc73c99ca0bb267f9730d5e64daa8d6b7460720dd5790d443292cc8e938434190fcaf55195e5f039ffd50286018045ac2e0ed8c9a8e83eb5cae5878dcb62
|
7
|
+
data.tar.gz: 439a1bd2702a7d5a729be16ad65fdd079a6a867f9ffa26c823b63d675dcaf2127311097b4f51a8c42425c33aba1d490dc46abf92d4bdab6c0185e191952d244c
|
@@ -20,6 +20,11 @@ module OmniAuth
|
|
20
20
|
option :on_registration, nil # See #registration_phase
|
21
21
|
option :on_failed_registration, nil # See #registration_phase
|
22
22
|
option :locate_conditions, ->(req) { { model.auth_key => req['auth_key'] } }
|
23
|
+
option :create_identity_link_text, 'Create an Identity'
|
24
|
+
option :registration_failure_message, 'One or more fields were invalid'
|
25
|
+
option :validation_failure_message, 'Validation failed'
|
26
|
+
option :title, 'Identity Verification' # Title for Login Form
|
27
|
+
option :registration_form_title, 'Register Identity' # Title for Registration Form
|
23
28
|
|
24
29
|
def request_phase
|
25
30
|
if options[:on_login]
|
@@ -71,14 +76,14 @@ module OmniAuth
|
|
71
76
|
if model.respond_to?(:column_names) && model.column_names.include?('provider')
|
72
77
|
attributes.reverse_merge!(provider: 'identity')
|
73
78
|
end
|
79
|
+
@identity = model.new(attributes)
|
74
80
|
if saving_instead_of_creating?
|
75
|
-
@identity = model.new(attributes)
|
76
81
|
env['omniauth.identity'] = @identity
|
77
82
|
if !validating? || valid?
|
78
83
|
@identity.save
|
79
84
|
registration_result
|
80
85
|
else
|
81
|
-
registration_failure(
|
86
|
+
registration_failure(options[:validation_failure_message])
|
82
87
|
end
|
83
88
|
else
|
84
89
|
deprecated_registration(attributes)
|
@@ -114,19 +119,19 @@ module OmniAuth
|
|
114
119
|
|
115
120
|
def build_omniauth_login_form
|
116
121
|
OmniAuth::Form.build(
|
117
|
-
title:
|
122
|
+
title: options[:title],
|
118
123
|
url: callback_path
|
119
124
|
) do |f|
|
120
125
|
f.text_field 'Login', 'auth_key'
|
121
126
|
f.password_field 'Password', 'password'
|
122
127
|
if options[:enable_registration]
|
123
|
-
f.html "<p align='center'><a href='#{registration_path}'
|
128
|
+
f.html "<p align='center'><a href='#{registration_path}'>#{options[:create_identity_link_text]}</a></p>"
|
124
129
|
end
|
125
130
|
end
|
126
131
|
end
|
127
132
|
|
128
133
|
def build_omniauth_registration_form(validation_message)
|
129
|
-
OmniAuth::Form.build(title:
|
134
|
+
OmniAuth::Form.build(title: options[:registration_form_title]) do |f|
|
130
135
|
f.html "<p style='color:red'>#{validation_message}</p>" if validation_message
|
131
136
|
options[:fields].each do |field|
|
132
137
|
f.text_field field.to_s.capitalize, field.to_s
|
@@ -137,14 +142,14 @@ module OmniAuth
|
|
137
142
|
end
|
138
143
|
|
139
144
|
def saving_instead_of_creating?
|
140
|
-
|
145
|
+
@identity.respond_to?(:save) && @identity.respond_to?(:persisted?)
|
141
146
|
end
|
142
147
|
|
143
148
|
# Validates the model before it is persisted
|
144
149
|
#
|
145
150
|
# @return [truthy or falsey] :on_validation option is truthy or falsey
|
146
151
|
def validating?
|
147
|
-
options[:on_validation]
|
152
|
+
!!options[:on_validation]
|
148
153
|
end
|
149
154
|
|
150
155
|
# Validates the model before it is persisted
|
@@ -169,7 +174,7 @@ module OmniAuth
|
|
169
174
|
env['PATH_INFO'] = callback_path
|
170
175
|
callback_phase
|
171
176
|
else
|
172
|
-
registration_failure(
|
177
|
+
registration_failure(options[:registration_failure_message])
|
173
178
|
end
|
174
179
|
end
|
175
180
|
|
@@ -3,8 +3,9 @@
|
|
3
3
|
RSpec.describe OmniAuth::Strategies::Identity do
|
4
4
|
attr_accessor :app
|
5
5
|
|
6
|
-
let(:
|
7
|
-
let(:
|
6
|
+
let(:env_hash) { last_response.headers['env'] }
|
7
|
+
let(:auth_hash) { env_hash['omniauth.auth'] }
|
8
|
+
let(:identity_hash) { env_hash['omniauth.identity'] }
|
8
9
|
let(:identity_options) { {} }
|
9
10
|
let(:anon_ar) do
|
10
11
|
AnonymousActiveRecord.generate(
|
@@ -193,7 +194,7 @@ RSpec.describe OmniAuth::Strategies::Identity do
|
|
193
194
|
end
|
194
195
|
end
|
195
196
|
|
196
|
-
context 'with
|
197
|
+
context 'with good identity' do
|
197
198
|
let(:properties) do
|
198
199
|
{
|
199
200
|
name: 'Awesome Dude',
|
@@ -209,9 +210,66 @@ RSpec.describe OmniAuth::Strategies::Identity do
|
|
209
210
|
expect(auth_hash['uid']).to match(/\d+/)
|
210
211
|
expect(auth_hash['provider']).to eq('identity')
|
211
212
|
end
|
213
|
+
|
214
|
+
context 'with on_validation proc' do
|
215
|
+
let(:identity_options) do
|
216
|
+
{ model: anon_ar, on_validation: on_validation_proc }
|
217
|
+
end
|
218
|
+
let(:on_validation_proc) do
|
219
|
+
lambda { |_env|
|
220
|
+
false
|
221
|
+
}
|
222
|
+
end
|
223
|
+
|
224
|
+
context 'when validation fails' do
|
225
|
+
it 'does not set the env hash' do
|
226
|
+
post '/auth/identity/register', properties
|
227
|
+
expect(env_hash).to eq(nil)
|
228
|
+
end
|
229
|
+
|
230
|
+
it 'renders registration form' do
|
231
|
+
post '/auth/identity/register', properties
|
232
|
+
expect(last_response.body).to be_include(described_class.default_options[:registration_form_title])
|
233
|
+
end
|
234
|
+
|
235
|
+
it 'displays validation failure message' do
|
236
|
+
post '/auth/identity/register', properties
|
237
|
+
expect(last_response.body).to be_include(described_class.default_options[:validation_failure_message])
|
238
|
+
end
|
239
|
+
end
|
240
|
+
|
241
|
+
context 'when validation succeeds' do
|
242
|
+
let(:on_validation_proc) do
|
243
|
+
lambda { |_env|
|
244
|
+
true
|
245
|
+
}
|
246
|
+
end
|
247
|
+
|
248
|
+
it 'sets the auth hash' do
|
249
|
+
post '/auth/identity/register', properties
|
250
|
+
expect(auth_hash['uid']).to match(/\d+/)
|
251
|
+
expect(auth_hash['provider']).to eq('identity')
|
252
|
+
end
|
253
|
+
|
254
|
+
it 'does not render registration form' do
|
255
|
+
post '/auth/identity/register', properties
|
256
|
+
expect(last_response.body).not_to be_include(described_class.default_options[:registration_form_title])
|
257
|
+
end
|
258
|
+
|
259
|
+
it 'does not display validation failure message' do
|
260
|
+
post '/auth/identity/register', properties
|
261
|
+
expect(last_response.body).not_to be_include(described_class.default_options[:validation_failure_message])
|
262
|
+
end
|
263
|
+
|
264
|
+
it 'does not display registration failure message' do
|
265
|
+
post '/auth/identity/register', properties
|
266
|
+
expect(last_response.body).not_to be_include(described_class.default_options[:registration_failure_message])
|
267
|
+
end
|
268
|
+
end
|
269
|
+
end
|
212
270
|
end
|
213
271
|
|
214
|
-
context 'with
|
272
|
+
context 'with bad identity' do
|
215
273
|
let(:properties) do
|
216
274
|
{
|
217
275
|
name: 'Awesome Dude',
|
@@ -249,6 +307,62 @@ RSpec.describe OmniAuth::Strategies::Identity do
|
|
249
307
|
expect(last_response.body).not_to be_include('One or more fields were invalid')
|
250
308
|
end
|
251
309
|
end
|
310
|
+
|
311
|
+
context 'with on_validation proc' do
|
312
|
+
let(:identity_options) do
|
313
|
+
{ model: anon_ar, on_validation: on_validation_proc }
|
314
|
+
end
|
315
|
+
let(:on_validation_proc) do
|
316
|
+
lambda { |_env|
|
317
|
+
false
|
318
|
+
}
|
319
|
+
end
|
320
|
+
|
321
|
+
context 'when validation fails' do
|
322
|
+
it 'does not set the env hash' do
|
323
|
+
post '/auth/identity/register', properties
|
324
|
+
expect(env_hash).to eq(nil)
|
325
|
+
end
|
326
|
+
|
327
|
+
it 'renders registration form' do
|
328
|
+
post '/auth/identity/register', properties
|
329
|
+
expect(last_response.body).to be_include(described_class.default_options[:registration_form_title])
|
330
|
+
end
|
331
|
+
|
332
|
+
it 'displays validation failure message' do
|
333
|
+
post '/auth/identity/register', properties
|
334
|
+
expect(last_response.body).to be_include(described_class.default_options[:validation_failure_message])
|
335
|
+
end
|
336
|
+
end
|
337
|
+
|
338
|
+
context 'when validation succeeds' do
|
339
|
+
let(:on_validation_proc) do
|
340
|
+
lambda { |_env|
|
341
|
+
true
|
342
|
+
}
|
343
|
+
end
|
344
|
+
|
345
|
+
it 'does not set the env hash' do
|
346
|
+
post '/auth/identity/register', properties
|
347
|
+
expect(env_hash).to eq(nil)
|
348
|
+
end
|
349
|
+
|
350
|
+
it 'renders registration form' do
|
351
|
+
post '/auth/identity/register', properties
|
352
|
+
expect(last_response.body).to be_include(described_class.default_options[:registration_form_title])
|
353
|
+
end
|
354
|
+
|
355
|
+
it 'does not display validation failure message' do
|
356
|
+
post '/auth/identity/register', properties
|
357
|
+
expect(last_response.body).not_to be_include(described_class.default_options[:validation_failure_message])
|
358
|
+
end
|
359
|
+
|
360
|
+
it 'display registration failure message' do
|
361
|
+
post '/auth/identity/register', properties
|
362
|
+
expect(last_response.body).to be_include(described_class.default_options[:registration_failure_message])
|
363
|
+
end
|
364
|
+
end
|
365
|
+
end
|
252
366
|
end
|
253
367
|
end
|
254
368
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: omniauth-identity
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.0.
|
4
|
+
version: 3.0.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Peter Boling
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: exe
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-03-
|
13
|
+
date: 2021-03-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: bcrypt
|