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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 54bcb44af270be6f5192f01771df589f95045ee16206315e7784c16c49d93df5
4
- data.tar.gz: 74fea42d1bae1ec385ca62291817679a59c3430fc6f4e609c966ee08db17c2d3
3
+ metadata.gz: e4a04ccc5139020fd72c805ab72b3a43468403afd18493c29bfee62093489218
4
+ data.tar.gz: af2428564b8f6242988fa1c71468efc05378aa8550a28c9e6b7f122528987dad
5
5
  SHA512:
6
- metadata.gz: dd0dbba52b99e4117a02072d3f48fbb3623614697a5e972a4f99081351479c9a2846696752a112ffd63d9528631ef196763146af5cc2792996246bcdaa755a97
7
- data.tar.gz: 406bdf51f7114cc26354cf682658a3f44cb192db2f94cb45d0c7fd72384774d1464678275aac671a973b1660031084c21b4a290279e8e52a9ea69109a8186068
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
- raw, enc = Devise.token_generator.generate(self.class, :invitation_token)
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
@@ -1,3 +1,3 @@
1
1
  module DeviseInvitable
2
- VERSION = '3.0.2'.freeze
2
+ VERSION = '3.0.3'.freeze
3
3
  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 :invitation_token, type: String
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
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: devise_invitable
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergio Cambra