acts_as_joinable 1.3.2 → 1.3.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.
@@ -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: []