pundit 2.0.1 → 2.1.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: dffd7b483c73feb3955b9f1eb6767d9fedb72eaf
4
- data.tar.gz: 5de4a5628f75bfcd87879c52917634f1ddde7072
2
+ SHA256:
3
+ metadata.gz: 371516754ff155f90b2093a0ce80aacf097ab555027b19ea22b7c823de72a66a
4
+ data.tar.gz: 41e69a7d6a317b46ad35d1d1485d2119b443b8a430e5c78e62935ec502c7d08f
5
5
  SHA512:
6
- metadata.gz: f21abdc81639b1d05209f1dfc71579294ba5226372493936ea9e6cfc2cc356e620223042f9f58679a2bb276dabab3f81e793a22d4b6e4bb69ef7edb467d399c1
7
- data.tar.gz: fe50e431d42e21e415ad361a1a0f536373e4a90b6f0631321dce3ba1b8e804c13b3e1d44f0446b3b1e71c68dbd868b5881b7bbaf6367e69b92bf23acf34a1022
6
+ metadata.gz: c77a792bec5d87f487fd3ee419d00745dcab754bd1bd38504d9987b71d80be3bd32fb1aab8419a8e63ef3c3718e1bd8a255ff0117be8f8a5c743c221d87fccdd
7
+ data.tar.gz: 3086b4036cdbafb499f462f22405f185c83d12c8d8175136531dd053733320574b3d5d05c8379895940d854d54d7abb59d6a0958a9d0e6fdfc03f7691883c3ab
@@ -30,33 +30,9 @@ Metrics/CyclomaticComplexity:
30
30
  Metrics/PerceivedComplexity:
31
31
  Enabled: false
32
32
 
33
- Style/StructInheritance:
34
- Enabled: false
35
-
36
33
  Layout/AlignParameters:
37
34
  EnforcedStyle: with_fixed_indentation
38
35
 
39
- Style/StringLiterals:
40
- EnforcedStyle: double_quotes
41
-
42
- Style/StringLiteralsInInterpolation:
43
- EnforcedStyle: double_quotes
44
-
45
- Layout/ClosingParenthesisIndentation:
46
- Enabled: false
47
-
48
- Style/OneLineConditional:
49
- Enabled: false
50
-
51
- Style/AndOr:
52
- Enabled: false
53
-
54
- Style/Not:
55
- Enabled: false
56
-
57
- Documentation:
58
- Enabled: false # TODO: Enable again once we have more docs
59
-
60
36
  Layout/CaseIndentation:
61
37
  EnforcedStyle: case
62
38
  SupportedStyles:
@@ -64,40 +40,37 @@ Layout/CaseIndentation:
64
40
  - end
65
41
  IndentOneStep: true
66
42
 
67
- Style/PercentLiteralDelimiters:
68
- PreferredDelimiters:
69
- '%w': "[]"
70
- '%W': "[]"
71
-
72
43
  Layout/AccessModifierIndentation:
73
44
  EnforcedStyle: outdent
74
45
 
75
- Style/SignalException:
76
- Enabled: false
77
-
78
- Layout/IndentationWidth:
79
- Enabled: false
80
-
81
- Style/TrivialAccessors:
82
- ExactNameMatch: true
83
-
84
46
  Layout/EndAlignment:
85
47
  EnforcedStyleAlignWith: variable
86
48
 
87
- Layout/DefEndAlignment:
88
- Enabled: false
49
+ Style/FrozenStringLiteralComment:
50
+ Enabled: true
89
51
 
90
- Lint/HandleExceptions:
91
- Enabled: false
52
+ Style/PercentLiteralDelimiters:
53
+ PreferredDelimiters:
54
+ '%w': "[]"
55
+ '%W': "[]"
92
56
 
93
- Style/SpecialGlobalVars:
57
+ Style/StringLiterals:
58
+ EnforcedStyle: double_quotes
59
+
60
+ Style/StringLiteralsInInterpolation:
61
+ EnforcedStyle: double_quotes
62
+
63
+ Style/StructInheritance:
94
64
  Enabled: false
95
65
 
96
- Style/TrivialAccessors:
66
+ Style/AndOr:
97
67
  Enabled: false
98
68
 
99
- Layout/IndentHash:
69
+ Style/Not:
100
70
  Enabled: false
101
71
 
102
72
  Style/DoubleNegation:
103
73
  Enabled: false
74
+
75
+ Documentation:
76
+ Enabled: false # TODO: Enable again once we have more docs
@@ -4,17 +4,18 @@ before_install:
4
4
 
5
5
  matrix:
6
6
  include:
7
- - rvm: 2.5.1
7
+ - rvm: 2.5.1 # Pre-installed Ruby version
8
8
  script: bundle exec rake rubocop # ONLY lint once, first
9
9
  - rvm: 2.1
10
10
  - rvm: 2.2
11
11
  - rvm: 2.3.5
12
- - rvm: 2.4.2
13
- - rvm: 2.5.1
14
- - rvm: 2.6.0
12
+ - rvm: 2.4.6
13
+ - rvm: 2.5.5
14
+ - rvm: 2.6.3
15
15
  - rvm: jruby-9.1.8.0
16
16
  env:
17
17
  - JRUBY_OPTS="--debug"
18
- - rvm: jruby-9.2.5.0
18
+ jdk: openjdk8
19
+ - rvm: jruby-9.2.8.0
19
20
  env:
20
21
  - JRUBY_OPTS="--debug"
@@ -1,5 +1,13 @@
1
1
  # Pundit
2
2
 
3
+ ### Fixed
4
+
5
+ - Avoid name clashes with the Error class. (#590)
6
+
7
+ ### Changed
8
+
9
+ - Return a safer default NotAuthorizedError message. (#583)
10
+
3
11
  ## 2.0.1 (2019-01-18)
4
12
 
5
13
  ### Breaking changes
data/Gemfile CHANGED
@@ -1,16 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source "https://rubygems.org"
2
4
 
3
5
  ruby RUBY_VERSION
4
6
 
5
7
  gemspec
6
-
7
- group :development, :test do
8
- gem "actionpack"
9
- gem "activemodel"
10
- gem "bundler"
11
- gem "pry"
12
- gem "rake"
13
- gem "rspec"
14
- gem "rubocop"
15
- gem "yard"
16
- end
@@ -1,4 +1,4 @@
1
- Copyright (c) 2018 Jonas Nicklas, Varvet AB
1
+ Copyright (c) 2019 Jonas Nicklas, Varvet AB
2
2
 
3
3
  MIT License
4
4
 
data/README.md CHANGED
@@ -785,6 +785,10 @@ Pundit does not provide a DSL for testing scopes. Just test it like a regular Ru
785
785
  - [Using Pundit outside of a Rails controller](https://github.com/varvet/pundit/pull/136)
786
786
  - [Straightforward Rails Authorization with Pundit](http://www.sitepoint.com/straightforward-rails-authorization-with-pundit/)
787
787
 
788
+ ## Other implementations
789
+
790
+ - [Flask-Pundit](https://github.com/anurag90x/flask-pundit) (Python) is a [Flask](http://flask.pocoo.org/) extension "heavily inspired by" Pundit
791
+
788
792
  # License
789
793
 
790
794
  Licensed under the MIT license, see the separate LICENSE.txt file.
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "rubygems"
2
4
  require "bundler/gem_tasks"
3
5
  require "rspec/core/rake_task"
@@ -8,6 +8,11 @@ require "active_support/core_ext/object/blank"
8
8
  require "active_support/core_ext/module/introspection"
9
9
  require "active_support/dependencies/autoload"
10
10
 
11
+ # @api private
12
+ # To avoid name clashes with common Error naming when mixing in Pundit,
13
+ # keep it here with compact class style definition.
14
+ class Pundit::Error < StandardError; end # rubocop:disable Style/ClassAndModuleChildren
15
+
11
16
  # @api public
12
17
  module Pundit
13
18
  SUFFIX = "Policy".freeze
@@ -15,9 +20,6 @@ module Pundit
15
20
  # @api private
16
21
  module Generators; end
17
22
 
18
- # @api private
19
- class Error < StandardError; end
20
-
21
23
  # Error that will be raised when authorization has failed
22
24
  class NotAuthorizedError < Error
23
25
  attr_reader :query, :record, :policy
@@ -30,7 +32,7 @@ module Pundit
30
32
  @record = options[:record]
31
33
  @policy = options[:policy]
32
34
 
33
- message = options.fetch(:message) { "not allowed to #{query} this #{record.inspect}" }
35
+ message = options.fetch(:message) { "not allowed to #{query} this #{record.class}" }
34
36
  end
35
37
 
36
38
  super(message)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Pundit
2
4
  # Finds policy and scope classes for given object.
3
5
  # @api public
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "active_support/core_ext/array/conversions"
2
4
 
3
5
  module Pundit
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Pundit
4
- VERSION = "2.0.1".freeze
4
+ VERSION = "2.1.0".freeze
5
5
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path("lib", __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
  require "pundit/version"
@@ -12,10 +14,18 @@ Gem::Specification.new do |gem|
12
14
  gem.homepage = "https://github.com/varvet/pundit"
13
15
  gem.license = "MIT"
14
16
 
15
- gem.files = `git ls-files`.split($/)
17
+ gem.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
16
18
  gem.executables = gem.files.grep(%r{^bin/}).map { |f| File.basename(f) }
17
19
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
20
  gem.require_paths = ["lib"]
19
21
 
20
22
  gem.add_dependency "activesupport", ">= 3.0.0"
23
+ gem.add_development_dependency "actionpack", ">= 3.0.0"
24
+ gem.add_development_dependency "activemodel", ">= 3.0.0"
25
+ gem.add_development_dependency "bundler"
26
+ gem.add_development_dependency "pry"
27
+ gem.add_development_dependency "rake"
28
+ gem.add_development_dependency "rspec", ">= 2.0.0"
29
+ gem.add_development_dependency "rubocop", "0.57.2"
30
+ gem.add_development_dependency "yard"
21
31
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe PostPolicy do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Pundit::PolicyFinder do
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "spec_helper"
2
4
 
3
5
  describe Pundit do
@@ -36,7 +38,7 @@ describe Pundit do
36
38
  # rubocop:disable Style/MultilineBlockChain
37
39
  expect do
38
40
  Pundit.authorize(user, post, :destroy?)
39
- end.to raise_error(Pundit::NotAuthorizedError, "not allowed to destroy? this #<Post>") do |error|
41
+ end.to raise_error(Pundit::NotAuthorizedError, "not allowed to destroy? this Post") do |error|
40
42
  expect(error.query).to eq :destroy?
41
43
  expect(error.record).to eq post
42
44
  expect(error.policy).to eq Pundit.policy(user, post)
@@ -518,11 +520,13 @@ describe Pundit do
518
520
 
519
521
  describe "#permitted_attributes" do
520
522
  it "checks policy for permitted attributes" do
521
- params = ActionController::Parameters.new(post: {
522
- title: "Hello",
523
- votes: 5,
524
- admin: true
525
- })
523
+ params = ActionController::Parameters.new(
524
+ post: {
525
+ title: "Hello",
526
+ votes: 5,
527
+ admin: true
528
+ }
529
+ )
526
530
 
527
531
  action = "update"
528
532
 
@@ -534,11 +538,13 @@ describe Pundit do
534
538
  end
535
539
 
536
540
  it "checks policy for permitted attributes for record of a ActiveModel type" do
537
- params = ActionController::Parameters.new(customer_post: {
538
- title: "Hello",
539
- votes: 5,
540
- admin: true
541
- })
541
+ params = ActionController::Parameters.new(
542
+ customer_post: {
543
+ title: "Hello",
544
+ votes: 5,
545
+ admin: true
546
+ }
547
+ )
542
548
 
543
549
  action = "update"
544
550
 
@@ -554,24 +560,28 @@ describe Pundit do
554
560
 
555
561
  describe "#permitted_attributes_for_action" do
556
562
  it "is checked if it is defined in the policy" do
557
- params = ActionController::Parameters.new(post: {
558
- title: "Hello",
559
- body: "blah",
560
- votes: 5,
561
- admin: true
562
- })
563
+ params = ActionController::Parameters.new(
564
+ post: {
565
+ title: "Hello",
566
+ body: "blah",
567
+ votes: 5,
568
+ admin: true
569
+ }
570
+ )
563
571
 
564
572
  action = "revise"
565
573
  expect(Controller.new(user, action, params).permitted_attributes(post).to_h).to eq("body" => "blah")
566
574
  end
567
575
 
568
576
  it "can be explicitly set" do
569
- params = ActionController::Parameters.new(post: {
570
- title: "Hello",
571
- body: "blah",
572
- votes: 5,
573
- admin: true
574
- })
577
+ params = ActionController::Parameters.new(
578
+ post: {
579
+ title: "Hello",
580
+ body: "blah",
581
+ votes: 5,
582
+ admin: true
583
+ }
584
+ )
575
585
 
576
586
  action = "update"
577
587
  expect(Controller.new(user, action, params).permitted_attributes(post, :revise).to_h).to eq("body" => "blah")
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require "pundit"
2
4
  require "pundit/rspec"
3
5
 
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: 2.0.1
4
+ version: 2.1.0
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: 2019-01-18 00:00:00.000000000 Z
12
+ date: 2019-08-14 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -25,6 +25,118 @@ dependencies:
25
25
  - - ">="
26
26
  - !ruby/object:Gem::Version
27
27
  version: 3.0.0
28
+ - !ruby/object:Gem::Dependency
29
+ name: actionpack
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: activemodel
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: '0'
63
+ type: :development
64
+ prerelease: false
65
+ version_requirements: !ruby/object:Gem::Requirement
66
+ requirements:
67
+ - - ">="
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
70
+ - !ruby/object:Gem::Dependency
71
+ name: pry
72
+ requirement: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: '0'
77
+ type: :development
78
+ prerelease: false
79
+ version_requirements: !ruby/object:Gem::Requirement
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ version: '0'
84
+ - !ruby/object:Gem::Dependency
85
+ name: rake
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: rspec
100
+ requirement: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: 2.0.0
105
+ type: :development
106
+ prerelease: false
107
+ version_requirements: !ruby/object:Gem::Requirement
108
+ requirements:
109
+ - - ">="
110
+ - !ruby/object:Gem::Version
111
+ version: 2.0.0
112
+ - !ruby/object:Gem::Dependency
113
+ name: rubocop
114
+ requirement: !ruby/object:Gem::Requirement
115
+ requirements:
116
+ - - '='
117
+ - !ruby/object:Gem::Version
118
+ version: 0.57.2
119
+ type: :development
120
+ prerelease: false
121
+ version_requirements: !ruby/object:Gem::Requirement
122
+ requirements:
123
+ - - '='
124
+ - !ruby/object:Gem::Version
125
+ version: 0.57.2
126
+ - !ruby/object:Gem::Dependency
127
+ name: yard
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'
28
140
  description: Object oriented authorization for Rails applications
29
141
  email:
30
142
  - jonas.nicklas@gmail.com
@@ -82,8 +194,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
194
  - !ruby/object:Gem::Version
83
195
  version: '0'
84
196
  requirements: []
85
- rubyforge_project:
86
- rubygems_version: 2.5.2
197
+ rubygems_version: 3.0.3
87
198
  signing_key:
88
199
  specification_version: 4
89
200
  summary: OO authorization for Rails