effective_resources 2.11.0 → 2.11.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +37 -0
- data/app/models/concerns/effective_devise_user.rb +8 -8
- data/lib/effective_resources/version.rb +1 -1
- 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: 70b3835f1e45128ade83d38d69adbcd8096fd5aecce4882028d0512dab970dae
|
4
|
+
data.tar.gz: 7c38e5cb62a55b4fa4924970aad1b0f45cf06b0dccedb41770f8df394e98a9c0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 50be7d9a989a25f8aa6777e85603c18b8ccc3be72e78aa35e4aa83814ca0fa74371de434c1138dc9a2331b57d79c1e032dbf987628c2b3b800b8b3819b26eb3d
|
7
|
+
data.tar.gz: 46e3229e7ecc0a7e989ac022afed029183b96e9a225f7a3d93edc3d9ff0a14a37682bf4d1685e1c3ebf3f8c8a5760e0cd09eafc7346eb940bf13d5aecd1752ad
|
data/README.md
CHANGED
@@ -392,6 +392,43 @@ def to_select2
|
|
392
392
|
end
|
393
393
|
```
|
394
394
|
|
395
|
+
## Authentication
|
396
|
+
Effective Resources is designed to work with Devise. It also adds support for an `alternate email`
|
397
|
+
for authentication. You just need to add an `alternate_email` column to your `User` model table.
|
398
|
+
|
399
|
+
After that column is added, any user would be able to log in with either their `email` or their
|
400
|
+
`alternate_email`.
|
401
|
+
|
402
|
+
You can also create another mailer for `devise` in order to send password reset emails to the both
|
403
|
+
the primary `email` and also the `alternate_email`, like this:
|
404
|
+
|
405
|
+
```ruby
|
406
|
+
class DeviseMailer < Devise::Mailer
|
407
|
+
# Overriding Devise's #headers_for to support alternate_email when present
|
408
|
+
def headers_for(action, opts)
|
409
|
+
headers = super(action, opts)
|
410
|
+
|
411
|
+
if [:reset_password_instructions].include?(action)
|
412
|
+
headers.merge!(
|
413
|
+
to: [resource.email, resource.try(:alternate_email)].compact.uniq
|
414
|
+
)
|
415
|
+
end
|
416
|
+
|
417
|
+
headers
|
418
|
+
end
|
419
|
+
end
|
420
|
+
```
|
421
|
+
|
422
|
+
and set this new mailer to be used by `devise` in `config/initializers/devise.rb`:
|
423
|
+
|
424
|
+
```ruby
|
425
|
+
Devise.setup do |config|
|
426
|
+
# ...
|
427
|
+
config.mailer = 'DeviseMailer'
|
428
|
+
# ...
|
429
|
+
end
|
430
|
+
```
|
431
|
+
|
395
432
|
## Testing
|
396
433
|
|
397
434
|
Run tests by:
|
@@ -187,13 +187,11 @@ module EffectiveDeviseUser
|
|
187
187
|
# https://github.com/heartcombo/devise/blob/f6e73e5b5c8f519f4be29ac9069c6ed8a2343ce4/lib/devise/models/authenticatable.rb#L276
|
188
188
|
def find_first_by_auth_conditions(tainted_conditions, opts = {})
|
189
189
|
conditions = devise_parameter_filter.filter(tainted_conditions).merge(opts)
|
190
|
-
email = conditions[:email]
|
191
|
-
conditions.delete(:email)
|
192
190
|
|
193
|
-
user = to_adapter.find_first(conditions
|
191
|
+
user = to_adapter.find_first(conditions)
|
194
192
|
return user if user.present? && user.persisted?
|
195
193
|
|
196
|
-
to_adapter.find_first(
|
194
|
+
to_adapter.find_first(alternate_email: conditions[:email]) if has_alternate_email?
|
197
195
|
end
|
198
196
|
|
199
197
|
# https://github.com/heartcombo/devise/blob/f6e73e5b5c8f519f4be29ac9069c6ed8a2343ce4/lib/devise/models/database_authenticatable.rb#L216
|
@@ -202,11 +200,9 @@ module EffectiveDeviseUser
|
|
202
200
|
primary_or_alternate_email = conditions[:email]
|
203
201
|
conditions.delete(:email)
|
204
202
|
|
205
|
-
has_alternate_email
|
206
|
-
|
207
|
-
raise "Expected an email #{has_alternate_email ? 'or alternate email' : ''} but got [#{primary_or_alternate_email}] instead" if primary_or_alternate_email.blank?
|
203
|
+
raise "Expected an email #{has_alternate_email? ? 'or alternate email' : ''} but got [#{primary_or_alternate_email}] instead" if primary_or_alternate_email.blank?
|
208
204
|
|
209
|
-
query = if has_alternate_email
|
205
|
+
query = if has_alternate_email?
|
210
206
|
"lower(email) = :value OR lower(alternate_email) = :value"
|
211
207
|
else
|
212
208
|
"lower(email) = :value"
|
@@ -218,6 +214,10 @@ module EffectiveDeviseUser
|
|
218
214
|
.first
|
219
215
|
end
|
220
216
|
|
217
|
+
def has_alternate_email?
|
218
|
+
'alternate_email'.in? column_names
|
219
|
+
end
|
220
|
+
|
221
221
|
end
|
222
222
|
|
223
223
|
# EffectiveDeviseUser Instance Methods
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: effective_resources
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.11.
|
4
|
+
version: 2.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Code and Effect
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-09-
|
11
|
+
date: 2023-09-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rails
|