devise_invitable 3.0.2 → 3.0.3
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +4 -0
- data/lib/devise_invitable/models.rb +3 -1
- data/lib/devise_invitable/version.rb +1 -1
- data/test/models/separate_invitations_test.rb +14 -0
- data/test/rails_app/app/models/user.rb +1 -7
- data/test/rails_app/db/migrate/20100401102949_create_tables.rb +0 -7
- metadata +1 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: e4a04ccc5139020fd72c805ab72b3a43468403afd18493c29bfee62093489218
|
|
4
|
+
data.tar.gz: af2428564b8f6242988fa1c71468efc05378aa8550a28c9e6b7f122528987dad
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: '03358597db4af64754b4c0f38837616762e0f3db4df414910f8989d42294e09ab17f342980a0650a80b18b73a761f78fadf21d84e34d997de0c79bfc880eb8dd'
|
|
7
|
+
data.tar.gz: 1162a02fac4275ca04dbb96a23b2f7e6db541ba1b3780ba6b6a25fbb067bba8dea534bd03ff15a45338a7c579e3eb967fb2ce4a24cb8e1afb4406508b7dd3708
|
data/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
## Unreleased
|
|
2
2
|
|
|
3
|
+
- Check invitation token uniqueness against the invitations store instead of
|
|
4
|
+
the resource table, which no longer has an `invitation_token` column after
|
|
5
|
+
running `devise_invitable:upgrade` ([#933](https://github.com/scambra/devise_invitable/issues/933))
|
|
6
|
+
|
|
3
7
|
## 3.0.2
|
|
4
8
|
|
|
5
9
|
- Add `DeviseInvitable::Invitation#deliver` to send a skipped pending
|
|
@@ -415,7 +415,9 @@ module Devise
|
|
|
415
415
|
# Generates a new random token for invitation, and stores the time
|
|
416
416
|
# this token is being generated
|
|
417
417
|
def generate_invitation_token
|
|
418
|
-
|
|
418
|
+
# Tokens live in the invitations store, so check uniqueness there
|
|
419
|
+
# instead of on the resource, which may no longer have the column
|
|
420
|
+
raw, enc = Devise.token_generator.generate(DeviseInvitable::Invitation, :invitation_token)
|
|
419
421
|
@raw_invitation_token = raw
|
|
420
422
|
current_invitation.invitation_token = enc
|
|
421
423
|
end
|
|
@@ -48,6 +48,20 @@ class SeparateInvitationsTest < ActiveSupport::TestCase
|
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
|
|
51
|
+
test 'invitation token uniqueness is checked against the invitations store' do
|
|
52
|
+
User.create_resource_on_invitation = false
|
|
53
|
+
Devise.stubs(:friendly_token).returns('taken-token', 'taken-token', 'free-token')
|
|
54
|
+
|
|
55
|
+
User.invite!(email: 'first@example.com')
|
|
56
|
+
User.invite!(email: 'second@example.com')
|
|
57
|
+
|
|
58
|
+
tokens = DeviseInvitable::Invitation.all.map(&:invitation_token)
|
|
59
|
+
assert_equal [
|
|
60
|
+
Devise.token_generator.digest(User, :invitation_token, 'taken-token'),
|
|
61
|
+
Devise.token_generator.digest(User, :invitation_token, 'free-token')
|
|
62
|
+
].sort, tokens.sort
|
|
63
|
+
end
|
|
64
|
+
|
|
51
65
|
test 'a failed later delivery remains unsent and can be retried' do
|
|
52
66
|
User.create_resource_on_invitation = false
|
|
53
67
|
invited = User.invite!(email: 'retry@example.com', skip_invitation: true)
|
|
@@ -18,13 +18,7 @@ class User < PARENT_MODEL_CLASS
|
|
|
18
18
|
field :unconfirmed_email, type: String # Only if using reconfirmable
|
|
19
19
|
|
|
20
20
|
## Invitable
|
|
21
|
-
field :
|
|
22
|
-
field :invitation_created_at, type: Time
|
|
23
|
-
field :invitation_sent_at, type: Time
|
|
24
|
-
field :invitation_accepted_at, type: Time
|
|
25
|
-
field :invitation_limit, type: Integer
|
|
26
|
-
field :invited_by_id, type: Integer
|
|
27
|
-
field :invited_by_type, type: String
|
|
21
|
+
field :invitation_limit, type: Integer
|
|
28
22
|
|
|
29
23
|
field :username
|
|
30
24
|
field :profile_id
|
|
@@ -20,18 +20,11 @@ class CreateTables < (Rails.version < '5.1' ? ActiveRecord::Migration : ActiveRe
|
|
|
20
20
|
t.boolean :active
|
|
21
21
|
|
|
22
22
|
## Invitable
|
|
23
|
-
t.string :invitation_token, :limit => 60
|
|
24
|
-
t.datetime :invitation_created_at
|
|
25
|
-
t.datetime :invitation_sent_at
|
|
26
|
-
t.datetime :invitation_accepted_at
|
|
27
23
|
t.integer :invitation_limit
|
|
28
|
-
t.integer :invited_by_id
|
|
29
|
-
t.string :invited_by_type
|
|
30
24
|
t.integer :invitations_count, :default => 0
|
|
31
25
|
|
|
32
26
|
t.timestamps :null => false
|
|
33
27
|
end
|
|
34
|
-
add_index :users, :invitation_token, :unique => true
|
|
35
28
|
|
|
36
29
|
create_table :devise_invitations do |t|
|
|
37
30
|
t.string :invitation_token
|