devise_invitable 0.4.rc5 → 0.4.0
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.
Potentially problematic release.
This version of devise_invitable might be problematic. Click here for more details.
data/README.rdoc
CHANGED
@@ -104,6 +104,18 @@ To send an invitation to a user, use the <tt>invite!</tt> class method. <tt>:ema
|
|
104
104
|
User.invite!(:email => "new_user@example.com", :name => "John Doe")
|
105
105
|
# => an invitation email will be sent to new_user@example.com
|
106
106
|
|
107
|
+
If you want to create the invitation but not send it, you can set <tt>skip_invitation</tt> to true.
|
108
|
+
|
109
|
+
User.invite!(:email => "new_user@example.com", :name => "John Doe") do |u|
|
110
|
+
u.skip_invitation = true
|
111
|
+
end
|
112
|
+
# => the record will be created, but the invitation email will not be sent
|
113
|
+
|
114
|
+
You can add :skip_invitation to attributes hash if skip_invitation is added to attr_accessible.
|
115
|
+
|
116
|
+
User.invite!(:email => "new_user@example.com", :name => "John Doe", :skip_invitation => true)
|
117
|
+
# => the record will be created, but the invitation email will not be sent
|
118
|
+
|
107
119
|
=== Accept an invitation
|
108
120
|
|
109
121
|
To accept an invitation with a token use the <tt>accept_invitation!</tt> class method. <tt>:invitation_token</tt> must be present in the parameters hash. You can also include other attributes in the hash.
|
@@ -17,10 +17,6 @@ class Devise::InvitationsController < ApplicationController
|
|
17
17
|
self.resource = resource_class.invite!(params[resource_name], current_inviter)
|
18
18
|
|
19
19
|
if resource.errors.empty?
|
20
|
-
if resource_class.invitation_limit.present? && current_inviter
|
21
|
-
current_inviter.invitation_limit ||= resource_class.invitation_limit
|
22
|
-
current_inviter.decrement!(:invitation_limit)
|
23
|
-
end
|
24
20
|
set_flash_message :notice, :send_instructions, :email => self.resource.email
|
25
21
|
redirect_to after_sign_in_path_for(resource_name)
|
26
22
|
else
|
@@ -21,6 +21,8 @@ module Devise
|
|
21
21
|
module Invitable
|
22
22
|
extend ActiveSupport::Concern
|
23
23
|
|
24
|
+
attr_accessor :skip_invitation
|
25
|
+
|
24
26
|
included do
|
25
27
|
belongs_to :invited_by, :polymorphic => true
|
26
28
|
end
|
@@ -59,7 +61,10 @@ module Devise
|
|
59
61
|
self.skip_confirmation! if self.new_record? && self.respond_to?(:skip_confirmation!)
|
60
62
|
generate_invitation_token if self.invitation_token.nil?
|
61
63
|
self.invitation_sent_at = Time.now.utc
|
62
|
-
save(:validate => self.class.validate_on_invite)
|
64
|
+
if save(:validate => self.class.validate_on_invite)
|
65
|
+
self.invited_by.decrement_invitation_limit! if self.invited_by
|
66
|
+
!!deliver_invitation unless @skip_invitation
|
67
|
+
end
|
63
68
|
end
|
64
69
|
end
|
65
70
|
|
@@ -76,6 +81,12 @@ module Devise
|
|
76
81
|
end
|
77
82
|
|
78
83
|
protected
|
84
|
+
def decrement_invitation_limit!
|
85
|
+
if self.class.invitation_limit.present?
|
86
|
+
self.invitation_limit ||= self.class.invitation_limit
|
87
|
+
self.decrement!(:invitation_limit)
|
88
|
+
end
|
89
|
+
end
|
79
90
|
|
80
91
|
# Overriding the method in Devise's :validatable module so password is not required on inviting
|
81
92
|
def password_required?
|
@@ -127,7 +138,7 @@ module Devise
|
|
127
138
|
# user and send invitation to it. If user is found, returns the user with an
|
128
139
|
# email already exists error.
|
129
140
|
# Attributes must contain the user email, other attributes will be set in the record
|
130
|
-
def invite!(attributes={}, invited_by=nil)
|
141
|
+
def invite!(attributes={}, invited_by=nil, &block)
|
131
142
|
invitable = find_or_initialize_with_error_by(invite_key, attributes.delete(invite_key))
|
132
143
|
invitable.attributes = attributes
|
133
144
|
invitable.invited_by = invited_by
|
@@ -138,7 +149,10 @@ module Devise
|
|
138
149
|
invitable.errors.add(invite_key, :taken) unless invitable.invited?
|
139
150
|
end
|
140
151
|
|
141
|
-
|
152
|
+
if invitable.errors.empty?
|
153
|
+
yield invitable if block_given?
|
154
|
+
invitable.invite!
|
155
|
+
end
|
142
156
|
invitable
|
143
157
|
end
|
144
158
|
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: devise_invitable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
5
|
-
prerelease:
|
4
|
+
hash: 15
|
5
|
+
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
|
11
|
-
version: 0.4.rc5
|
9
|
+
- 0
|
10
|
+
version: 0.4.0
|
12
11
|
platform: ruby
|
13
12
|
authors:
|
14
13
|
- Sergio Cambra
|
@@ -16,7 +15,7 @@ autorequire:
|
|
16
15
|
bindir: bin
|
17
16
|
cert_chain: []
|
18
17
|
|
19
|
-
date: 2011-03-
|
18
|
+
date: 2011-03-31 00:00:00 +02:00
|
20
19
|
default_executable:
|
21
20
|
dependencies:
|
22
21
|
- !ruby/object:Gem::Dependency
|
@@ -59,13 +58,12 @@ dependencies:
|
|
59
58
|
requirements:
|
60
59
|
- - ~>
|
61
60
|
- !ruby/object:Gem::Version
|
62
|
-
hash:
|
61
|
+
hash: 31
|
63
62
|
segments:
|
64
63
|
- 1
|
65
64
|
- 2
|
66
|
-
-
|
67
|
-
|
68
|
-
version: 1.2.rc2
|
65
|
+
- 0
|
66
|
+
version: 1.2.0
|
69
67
|
type: :runtime
|
70
68
|
version_requirements: *id003
|
71
69
|
description: It adds support for send invitations by email (it requires to be authenticated) and accept the invitation by setting a password.
|
@@ -82,7 +80,6 @@ files:
|
|
82
80
|
- app/views/devise/invitations/edit.html.erb
|
83
81
|
- app/views/devise/invitations/new.html.erb
|
84
82
|
- app/views/devise/mailer/invitation_instructions.html.erb
|
85
|
-
- app/views/devise/mailer/invitation.html.erb
|
86
83
|
- config/locales/en.yml
|
87
84
|
- lib/devise_invitable.rb
|
88
85
|
- lib/devise_invitable/mailer.rb
|
@@ -1,8 +0,0 @@
|
|
1
|
-
<p>Hello <%= @resource.email %>!</p>
|
2
|
-
|
3
|
-
<p>Someone has invited you to <%= root_url %>, you can accept it through the link below.</p>
|
4
|
-
|
5
|
-
<p><%= link_to 'Accept invitation', accept_invitation_url(@resource, :invitation_token => @resource.invitation_token) %></p>
|
6
|
-
|
7
|
-
<p>If you don't want to accept the invitation, please ignore this email.<br />
|
8
|
-
Your account won't be created until you access the link above and set your password.</p>
|