devise_invitable 0.4.rc3 → 0.4.rc4
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.
data/lib/devise_invitable.rb
CHANGED
|
@@ -8,10 +8,23 @@ require 'devise_invitable/controllers/helpers'
|
|
|
8
8
|
require 'devise_invitable/rails'
|
|
9
9
|
|
|
10
10
|
module Devise
|
|
11
|
-
#
|
|
11
|
+
# Public: Validity period of the invitation token (default: 0). If
|
|
12
|
+
# invite_for is 0 or nil, the invitation will never expire.
|
|
13
|
+
# Set invite_for in the Devise configuration file (in config/initializers/devise.rb).
|
|
14
|
+
#
|
|
15
|
+
# config.invite_for = 2.weeks # => The invitation token will be valid 2 weeks
|
|
12
16
|
mattr_accessor :invite_for
|
|
13
17
|
@@invite_for = 0
|
|
14
18
|
|
|
19
|
+
# Public: Flag that force a record to be valid before being actually invited
|
|
20
|
+
# (default: false).
|
|
21
|
+
#
|
|
22
|
+
# Examples (in config/initializers/devise.rb)
|
|
23
|
+
#
|
|
24
|
+
# config.validate_on_invite = true
|
|
25
|
+
mattr_accessor :validate_on_invite
|
|
26
|
+
@@validate_on_invite = false
|
|
27
|
+
|
|
15
28
|
# Public: number of invitations the user is allowed to send
|
|
16
29
|
#
|
|
17
30
|
# Examples (in config/initializers/devise.rb)
|
|
@@ -20,7 +33,11 @@ module Devise
|
|
|
20
33
|
mattr_accessor :invitation_limit
|
|
21
34
|
@@invitation_limit = nil
|
|
22
35
|
|
|
23
|
-
# The key to be used to check existing users when sending an invitation
|
|
36
|
+
# Public: The key to be used to check existing users when sending an invitation
|
|
37
|
+
#
|
|
38
|
+
# Examples (in config/initializers/devise.rb)
|
|
39
|
+
#
|
|
40
|
+
# config.invite_key = :email
|
|
24
41
|
mattr_accessor :invite_key
|
|
25
42
|
@@invite_key = :email
|
|
26
43
|
end
|
|
@@ -55,11 +55,11 @@ module Devise
|
|
|
55
55
|
# Reset invitation token and send invitation again
|
|
56
56
|
def invite!
|
|
57
57
|
if new_record? || invited?
|
|
58
|
+
@skip_password = true
|
|
58
59
|
self.skip_confirmation! if self.new_record? && self.respond_to?(:skip_confirmation!)
|
|
59
60
|
generate_invitation_token if self.invitation_token.nil?
|
|
60
61
|
self.invitation_sent_at = Time.now.utc
|
|
61
|
-
save(:validate =>
|
|
62
|
-
::Devise.mailer.invitation_instructions(self).deliver
|
|
62
|
+
save(:validate => self.class.validate_on_invite) && !!deliver_invitation
|
|
63
63
|
end
|
|
64
64
|
end
|
|
65
65
|
|
|
@@ -77,6 +77,16 @@ module Devise
|
|
|
77
77
|
|
|
78
78
|
protected
|
|
79
79
|
|
|
80
|
+
# Overriding the method in Devise's :validatable module so password is not required on inviting
|
|
81
|
+
def password_required?
|
|
82
|
+
!@skip_password && super
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
# Deliver the invitation email
|
|
86
|
+
def deliver_invitation
|
|
87
|
+
::Devise.mailer.invitation_instructions(self).deliver
|
|
88
|
+
end
|
|
89
|
+
|
|
80
90
|
# Clear invitation token when reset password token is cleared too
|
|
81
91
|
def clear_reset_password_token
|
|
82
92
|
self.invitation_token = nil if invited?
|
|
@@ -153,6 +163,7 @@ module Devise
|
|
|
153
163
|
end
|
|
154
164
|
|
|
155
165
|
Devise::Models.config(self, :invite_for)
|
|
166
|
+
Devise::Models.config(self, :validate_on_invite)
|
|
156
167
|
Devise::Models.config(self, :invitation_limit)
|
|
157
168
|
Devise::Models.config(self, :invite_key)
|
|
158
169
|
end
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
class DeviseInvitableAddTo<%= table_name.camelize %> < ActiveRecord::Migration
|
|
2
2
|
def self.up
|
|
3
3
|
change_table :<%= table_name %> do |t|
|
|
4
|
-
t.string
|
|
5
|
-
t.datetime
|
|
6
|
-
t.integer
|
|
7
|
-
t.
|
|
8
|
-
t.index
|
|
9
|
-
t.index
|
|
4
|
+
t.string :invitation_token, :limit => 60
|
|
5
|
+
t.datetime :invitation_sent_at
|
|
6
|
+
t.integer :invitation_limit
|
|
7
|
+
t.references :invited_by, :polymorphic => true
|
|
8
|
+
t.index :invitation_token # for invitable
|
|
9
|
+
t.index :invited_by_id
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
# And allow null encrypted_password and password_salt:
|
|
@@ -17,9 +17,9 @@ class DeviseInvitableAddTo<%= table_name.camelize %> < ActiveRecord::Migration
|
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def self.down
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
20
|
+
change_table :<%= table_name %> do |t|
|
|
21
|
+
remove_references :invited_by, :polymorphic => true
|
|
22
|
+
remove :invitation_limit, :invitation_sent_at, :invitation_token
|
|
23
|
+
end
|
|
24
24
|
end
|
|
25
25
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: devise_invitable
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 15424205
|
|
5
5
|
prerelease: 4
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 4
|
|
9
9
|
- rc
|
|
10
|
-
-
|
|
11
|
-
version: 0.4.
|
|
10
|
+
- 4
|
|
11
|
+
version: 0.4.rc4
|
|
12
12
|
platform: ruby
|
|
13
13
|
authors:
|
|
14
14
|
- Sergio Cambra
|
|
@@ -16,7 +16,7 @@ autorequire:
|
|
|
16
16
|
bindir: bin
|
|
17
17
|
cert_chain: []
|
|
18
18
|
|
|
19
|
-
date: 2011-
|
|
19
|
+
date: 2011-03-09 00:00:00 +01:00
|
|
20
20
|
default_executable:
|
|
21
21
|
dependencies:
|
|
22
22
|
- !ruby/object:Gem::Dependency
|