acts_as_joinable 1.3.2 → 1.3.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 9b4ac9e08c575585c4b56af01499d379e7768862
4
+ data.tar.gz: cd9b20b10964f2a52963388ee7f66979ed5ad41e
5
+ SHA512:
6
+ metadata.gz: 5bbd8c8d862ed5951d0de60ee37daded85db2520ec1b7f6e3067d8865b759bf00d6de15b52184a6149be9abe1187f2e87624a11eb0357f7df26a683cf0a8fc7b
7
+ data.tar.gz: 9be64c7ee4ebd5eccfee5585ded7fc175fa5e1c89ddae5315cf8229f70fc360dd013fcacb52255cd304dc751fb11ae9cc0a7238433d83bcfd4901b96983a6a45
@@ -48,7 +48,7 @@ module Joinable #:nodoc:
48
48
  base.class_eval do
49
49
  cattr_accessor :permissions, :component_permissions_hash
50
50
 
51
- has_many :membership_invitations, :as => :joinable, :dependent => :destroy, :before_add => :add_initiator
51
+ has_many :membership_invitations, :as => :joinable, :dependent => :destroy, :before_add => :add_initiator, :before_remove => :add_initiator
52
52
  has_many :membership_requests, :as => :joinable, :dependent => :destroy
53
53
  has_many :memberships, lambda { order :id }, :as => :joinable, :dependent => :destroy, :before_remove => :add_initiator
54
54
 
@@ -121,14 +121,7 @@ module Joinable #:nodoc:
121
121
  # * collaborate - This is a faux permission. A user has permission to collaborate if they have any additional permissions above the standard viewer permissions.
122
122
  def with_permission_sql(user, permission, options = {})
123
123
  permission = permission.to_sym
124
-
125
- case user
126
- when String
127
- user_id = user
128
- when
129
- user_id = user.id
130
- end
131
-
124
+ user_id = user.respond_to?(:id) ? user.id : user # Support objects that aren't ActiveRecord::Base but respond to id
132
125
  joinable_id = options[:id_column] || "#{table_name}.id"
133
126
 
134
127
  if permission == :find
@@ -197,7 +190,7 @@ module Joinable #:nodoc:
197
190
  if cached_membership_request != nil
198
191
  cached_membership_request
199
192
  else
200
- membership_requests.where(:user_id => user.id).first
193
+ membership_requests.where(:user_id => user).first
201
194
  end
202
195
  end
203
196
 
@@ -215,7 +208,7 @@ module Joinable #:nodoc:
215
208
  if cached_membership_invitation != nil
216
209
  cached_membership_invitation
217
210
  else
218
- membership_invitations.where(:user_id => user.id).first
211
+ membership_invitations.where(:user_id => user).first
219
212
  end
220
213
  end
221
214
 
@@ -228,17 +221,17 @@ module Joinable #:nodoc:
228
221
  # user. This method also supports caching of a membership
229
222
  # request in order to facilitate eager loading.
230
223
  #NOTE: See :membership_request_for documentation for an in depth example of this type of behaviour
231
- def membership_for(user_id)
224
+ def membership_for(user)
232
225
  if cached_membership != nil
233
226
  cached_membership
234
227
  else
235
- memberships.where(:user_id => user_id).first
228
+ memberships.where(:user_id => user).first
236
229
  end
237
230
  end
238
231
 
239
232
  # Find out whether this Joinable has a membership for a certain user and return true, else false
240
- def membership_for?(user_id)
241
- !membership_for(user_id).nil?
233
+ def membership_for?(user)
234
+ !membership_for(user).nil?
242
235
  end
243
236
 
244
237
  # Returns a unique cache key any time the memberships were updated for this joinable
@@ -60,16 +60,8 @@ module Joinable #:nodoc:
60
60
  # after they join a project, we need to check the default_permission_set of the project.
61
61
  def with_permission_sql(user, permission, options = {})
62
62
  permission = permission.to_s
63
-
64
- case user
65
- when String
66
- user_id = user
67
- else
68
- user_id = user.id
69
- end
70
-
63
+ user_id = user.respond_to?(:id) ? user.id : user # Support objects that aren't ActiveRecord::Base but respond to id
71
64
  component_id_column = options[:id_column] || "#{table_name}.id"
72
-
73
65
  permission_without_join_and_prefix = permission.gsub('join_and_', '')
74
66
  permission_or_column = permission_without_join_and_prefix == 'view' ? "permission_links.component_view_permission" : "'#{permission_without_join_and_prefix}'"
75
67
 
@@ -15,6 +15,11 @@ module Joinable #:nodoc:
15
15
  where(with_permission_sql(user, permission))
16
16
  end
17
17
 
18
+ # Returns all records where the given user does not have the given permission
19
+ def without_permission(user, permission)
20
+ where.not(with_permission_sql(user, permission))
21
+ end
22
+
18
23
  # Returns an SQL fragment for a WHERE condition that evaluates to true if the user has the given permission
19
24
  # For use when asking
20
25
  def with_permission_sql(user, permission, options = {})
metadata CHANGED
@@ -1,8 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_joinable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.2
5
- prerelease:
4
+ version: 1.3.3
6
5
  platform: ruby
7
6
  authors:
8
7
  - Ryan Wallace
@@ -15,7 +14,6 @@ dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: pg
17
16
  requirement: !ruby/object:Gem::Requirement
18
- none: false
19
17
  requirements:
20
18
  - - '>='
21
19
  - !ruby/object:Gem::Version
@@ -23,7 +21,6 @@ dependencies:
23
21
  type: :runtime
24
22
  prerelease: false
25
23
  version_requirements: !ruby/object:Gem::Requirement
26
- none: false
27
24
  requirements:
28
25
  - - '>='
29
26
  - !ruby/object:Gem::Version
@@ -31,7 +28,6 @@ dependencies:
31
28
  - !ruby/object:Gem::Dependency
32
29
  name: rails
33
30
  requirement: !ruby/object:Gem::Requirement
34
- none: false
35
31
  requirements:
36
32
  - - ~>
37
33
  - !ruby/object:Gem::Version
@@ -39,7 +35,6 @@ dependencies:
39
35
  type: :runtime
40
36
  prerelease: false
41
37
  version_requirements: !ruby/object:Gem::Requirement
42
- none: false
43
38
  requirements:
44
39
  - - ~>
45
40
  - !ruby/object:Gem::Version
@@ -47,7 +42,6 @@ dependencies:
47
42
  - !ruby/object:Gem::Dependency
48
43
  name: sqlite3
49
44
  requirement: !ruby/object:Gem::Requirement
50
- none: false
51
45
  requirements:
52
46
  - - '>='
53
47
  - !ruby/object:Gem::Version
@@ -55,7 +49,6 @@ dependencies:
55
49
  type: :development
56
50
  prerelease: false
57
51
  version_requirements: !ruby/object:Gem::Requirement
58
- none: false
59
52
  requirements:
60
53
  - - '>='
61
54
  - !ruby/object:Gem::Version
@@ -84,26 +77,25 @@ files:
84
77
  - README.rdoc
85
78
  homepage: http://github.com/rrn/acts_as_joinable
86
79
  licenses: []
80
+ metadata: {}
87
81
  post_install_message:
88
82
  rdoc_options: []
89
83
  require_paths:
90
84
  - lib
91
85
  required_ruby_version: !ruby/object:Gem::Requirement
92
- none: false
93
86
  requirements:
94
87
  - - '>='
95
88
  - !ruby/object:Gem::Version
96
89
  version: '0'
97
90
  required_rubygems_version: !ruby/object:Gem::Requirement
98
- none: false
99
91
  requirements:
100
92
  - - '>='
101
93
  - !ruby/object:Gem::Version
102
94
  version: '0'
103
95
  requirements: []
104
96
  rubyforge_project:
105
- rubygems_version: 1.8.25
97
+ rubygems_version: 2.0.5
106
98
  signing_key:
107
- specification_version: 3
99
+ specification_version: 4
108
100
  summary: An easy to use permissions system
109
101
  test_files: []