pundit 1.1.0 → 2.0.0.beta1

Sign up to get free protection for your applications and to get access to all the features.
@@ -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: