pundit 1.1.0 → 2.0.0.beta1

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.
@@ -46,7 +46,7 @@ class PostPolicy < Struct.new(:user, :post)
46
46
 
47
47
  def permitted_attributes
48
48
  if post.user == user
49
- [:title, :votes]
49
+ %i[title votes]
50
50
  else
51
51
  [:votes]
52
52
  end
@@ -62,6 +62,10 @@ class Post < Struct.new(:user)
62
62
  :published
63
63
  end
64
64
 
65
+ def self.read
66
+ :read
67
+ end
68
+
65
69
  def to_s
66
70
  "Post"
67
71
  end
@@ -77,20 +81,47 @@ module Customer
77
81
  OpenStruct.new(param_key: "customer_post")
78
82
  end
79
83
 
80
- def policy_class
84
+ def self.policy_class
81
85
  PostPolicy
82
86
  end
87
+
88
+ def policy_class
89
+ self.class.policy_class
90
+ end
91
+ end
92
+ end
93
+
94
+ class CommentScope
95
+ attr_reader :original_object
96
+ def initialize(original_object)
97
+ @original_object = original_object
98
+ end
99
+
100
+ def ==(other)
101
+ original_object == other.original_object
83
102
  end
84
103
  end
85
104
 
86
105
  class CommentPolicy < Struct.new(:user, :comment)
87
106
  class Scope < Struct.new(:user, :scope)
88
107
  def resolve
89
- scope
108
+ CommentScope.new(scope)
90
109
  end
91
110
  end
92
111
  end
93
112
 
113
+ class PublicationPolicy < Struct.new(:user, :publication)
114
+ class Scope < Struct.new(:user, :scope)
115
+ def resolve
116
+ scope.published
117
+ end
118
+ end
119
+
120
+ def create?
121
+ true
122
+ end
123
+ end
124
+
94
125
  class Comment
95
126
  extend ActiveModel::Naming
96
127
  end
@@ -140,9 +171,23 @@ end
140
171
  class CriteriaPolicy < Struct.new(:user, :criteria); end
141
172
 
142
173
  module Project
143
- class CommentPolicy < Struct.new(:user, :post); end
174
+ class CommentPolicy < Struct.new(:user, :comment)
175
+ class Scope < Struct.new(:user, :scope)
176
+ def resolve
177
+ scope
178
+ end
179
+ end
180
+ end
181
+
144
182
  class CriteriaPolicy < Struct.new(:user, :criteria); end
145
- class PostPolicy < Struct.new(:user, :post); end
183
+
184
+ class PostPolicy < Struct.new(:user, :post)
185
+ class Scope < Struct.new(:user, :scope)
186
+ def resolve
187
+ scope.read
188
+ end
189
+ end
190
+ end
146
191
  end
147
192
 
148
193
  class DenierPolicy < Struct.new(:user, :record)
@@ -153,24 +198,41 @@ end
153
198
 
154
199
  class Controller
155
200
  include Pundit
201
+ # Mark protected methods public so they may be called in test
202
+ # rubocop:disable Layout/AccessModifierIndentation, Style/AccessModifierDeclarations
203
+ public(*Pundit.protected_instance_methods)
204
+ # rubocop:enable Layout/AccessModifierIndentation, Style/AccessModifierDeclarations
156
205
 
157
- attr_reader :current_user, :params
206
+ attr_reader :current_user, :action_name, :params
158
207
 
159
- def initialize(current_user, params)
208
+ def initialize(current_user, action_name, params)
160
209
  @current_user = current_user
210
+ @action_name = action_name
161
211
  @params = params
162
212
  end
163
213
  end
164
214
 
165
- class NilClassPolicy
215
+ class NilClassPolicy < Struct.new(:user, :record)
166
216
  class Scope
167
217
  def initialize(*)
168
- raise "I'm only here to be annoying!"
218
+ raise Pundit::NotDefinedError, "Cannot scope NilClass"
169
219
  end
170
220
  end
171
221
 
172
- def initialize(*)
173
- raise "I'm only here to be annoying!"
222
+ def show?
223
+ false
224
+ end
225
+
226
+ def destroy?
227
+ false
228
+ end
229
+ end
230
+
231
+ class Wiki; end
232
+ class WikiPolicy
233
+ class Scope
234
+ # deliberate typo method
235
+ def initalize; end
174
236
  end
175
237
  end
176
238
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pundit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0.beta1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-01-14 00:00:00.000000000 Z
12
+ date: 2018-07-04 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -25,118 +25,6 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 3.0.0
28
- - !ruby/object:Gem::Dependency
29
- name: activemodel
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - ">="
33
- - !ruby/object:Gem::Version
34
- version: 3.0.0
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - ">="
40
- - !ruby/object:Gem::Version
41
- version: 3.0.0
42
- - !ruby/object:Gem::Dependency
43
- name: actionpack
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - ">="
47
- - !ruby/object:Gem::Version
48
- version: 3.0.0
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - ">="
54
- - !ruby/object:Gem::Version
55
- version: 3.0.0
56
- - !ruby/object:Gem::Dependency
57
- name: bundler
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '1.3'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '1.3'
70
- - !ruby/object:Gem::Dependency
71
- name: rspec
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ">="
75
- - !ruby/object:Gem::Version
76
- version: 2.0.0
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - ">="
82
- - !ruby/object:Gem::Version
83
- version: 2.0.0
84
- - !ruby/object:Gem::Dependency
85
- name: pry
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: '0'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - ">="
96
- - !ruby/object:Gem::Version
97
- version: '0'
98
- - !ruby/object:Gem::Dependency
99
- name: rake
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - ">="
103
- - !ruby/object:Gem::Version
104
- version: '0'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - ">="
110
- - !ruby/object:Gem::Version
111
- version: '0'
112
- - !ruby/object:Gem::Dependency
113
- name: yard
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - ">="
117
- - !ruby/object:Gem::Version
118
- version: '0'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - ">="
124
- - !ruby/object:Gem::Version
125
- version: '0'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - ">="
131
- - !ruby/object:Gem::Version
132
- version: '0'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - ">="
138
- - !ruby/object:Gem::Version
139
- version: '0'
140
28
  description: Object oriented authorization for Rails applications
141
29
  email:
142
30
  - jonas.nicklas@gmail.com
@@ -172,9 +60,10 @@ files:
172
60
  - lib/pundit/version.rb
173
61
  - pundit.gemspec
174
62
  - spec/policies/post_policy_spec.rb
63
+ - spec/policy_finder_spec.rb
175
64
  - spec/pundit_spec.rb
176
65
  - spec/spec_helper.rb
177
- homepage: https://github.com/elabs/pundit
66
+ homepage: https://github.com/varvet/pundit
178
67
  licenses:
179
68
  - MIT
180
69
  metadata: {}
@@ -189,17 +78,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
189
78
  version: '0'
190
79
  required_rubygems_version: !ruby/object:Gem::Requirement
191
80
  requirements:
192
- - - ">="
81
+ - - ">"
193
82
  - !ruby/object:Gem::Version
194
- version: '0'
83
+ version: 1.3.1
195
84
  requirements: []
196
85
  rubyforge_project:
197
- rubygems_version: 2.4.8
86
+ rubygems_version: 2.7.6
198
87
  signing_key:
199
88
  specification_version: 4
200
89
  summary: OO authorization for Rails
201
90
  test_files:
202
91
  - spec/policies/post_policy_spec.rb
92
+ - spec/policy_finder_spec.rb
203
93
  - spec/pundit_spec.rb
204
94
  - spec/spec_helper.rb
205
- has_rdoc: