snfoil-policy 1.0.0 → 1.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
2
  SHA256:
3
- metadata.gz: 905c2b441897ed1fdd4e183cb1dfd4daa32a3ad851e73f4634fc5cfe88f51f1d
4
- data.tar.gz: 2ca0b403563f5fce64c9a31c818575c9b34d89f20b6c2033dab7e2f20e32cc01
3
+ metadata.gz: b3899818db44a4cf74b5e3d1e46c5006cb1464fc1e9328df96611416f8018206
4
+ data.tar.gz: 41a79abc893070478fb79beef63d297c2220daf506a253f15e0a68fb7cf17af5
5
5
  SHA512:
6
- metadata.gz: 4f7654605cbf5c05e230313200b1dcc4a6dbb4bec6e41069c3261196766a9506293f4892f8b9c21d831c47749320132570d43b56077d59b649f698daee2c7caa
7
- data.tar.gz: 96ac8425c4663798e92df0b543a7589ecc2b50ad0773e560dad5f329e01268dc82b0303b21e495c66764be39e275cf1858a1e33917b85a6f375a67cdc4693f28
6
+ metadata.gz: f5df37cb8eab29844d872b900633322997e5cc38ddf1b08f6bb7b03e63870c7016107525729308f5baf941df8800d18eb2b8b43ab786222621cb552596f88ebc
7
+ data.tar.gz: 5fa5dab455a1e975851d316c00b08fd95079abd3abac3bc2bd246fffa0f40a788afa508b132cf4407612a81b30304a5afa95170d7d8899c14dceaa68b3ea0490
data/CODE_GOALS.md ADDED
@@ -0,0 +1,2 @@
1
+ # Goals
2
+
data/Gemfile CHANGED
@@ -4,3 +4,14 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in snfoil-policy.gemspec
6
6
  gemspec
7
+
8
+ group :development, :test do
9
+ gem 'bundle-audit', '~> 0.1.0'
10
+ gem 'fasterer', '~> 0.10.0'
11
+ gem 'pry-byebug', '~> 3.9', platform: :mri
12
+ gem 'rake', '~> 13.0'
13
+ gem 'rspec', '~> 3.10'
14
+ gem 'rubocop', '1.33'
15
+ gem 'rubocop-performance', '1.14.3'
16
+ gem 'rubocop-rspec', '2.12.1'
17
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module SnFoil
4
4
  module Policy
5
- VERSION = '1.0.0'
5
+ VERSION = '1.1.0'
6
6
  end
7
7
  end
data/lib/snfoil/policy.rb CHANGED
@@ -35,11 +35,6 @@ module SnFoil
35
35
  def permission(authorization_type, entity_class = nil, with: nil, &block)
36
36
  @snfoil_permissions ||= {}
37
37
  @snfoil_permissions[authorization_type] ||= {}
38
- if @snfoil_permissions[authorization_type][entity_class]
39
- raise SnFoil::Policy::Error,
40
- "permission #{entity_class} #{authorization_type} already defined for #{name}"
41
- end
42
-
43
38
  @snfoil_permissions[authorization_type][entity_class] = build_permission_exec(with, block)
44
39
  define_permission_method(authorization_type)
45
40
  end
@@ -47,16 +42,20 @@ module SnFoil
47
42
  def inherited(subclass)
48
43
  super
49
44
 
50
- instance_variables.grep(/@snfoil_.+/).each do |i|
51
- subclass.instance_variable_set(i, instance_variable_get(i).dup)
45
+ permissions = instance_variable_get(:@snfoil_permissions) || {}
46
+ inherited_permissions = {}
47
+ permissions.each_key do |action|
48
+ inherited_permissions[action] = permissions[action].dup
52
49
  end
50
+
51
+ subclass.instance_variable_set(:@snfoil_permissions, inherited_permissions)
53
52
  end
54
53
  end
55
54
 
56
55
  attr_reader :record, :entity
57
56
  attr_accessor :options
58
57
 
59
- def initialize(entity, record, options = {})
58
+ def initialize(entity, record, **options)
60
59
  @record = record
61
60
  @entity = entity
62
61
  @options = options
@@ -70,7 +69,7 @@ module SnFoil
70
69
  class Scope
71
70
  attr_reader :scope, :entity
72
71
 
73
- def initialize(scope, entity = nil)
72
+ def initialize(entity, scope)
74
73
  @entity = entity
75
74
  @scope = scope
76
75
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |spec|
12
12
  spec.description = 'A set of helper functions to build permission files inspired by Pundit.'
13
13
  spec.homepage = 'https://github.com/limited-effort/snfoil-policy'
14
14
  spec.license = 'Apache-2.0'
15
- spec.required_ruby_version = '>= 2.7'
15
+ spec.required_ruby_version = '>= 2.6'
16
16
 
17
17
  spec.metadata['homepage_uri'] = spec.homepage
18
18
  spec.metadata['source_code_uri'] = spec.homepage
@@ -29,13 +29,4 @@ Gem::Specification.new do |spec|
29
29
  spec.require_paths = ['lib']
30
30
 
31
31
  spec.add_dependency 'activesupport', '>= 5.2.6'
32
-
33
- spec.add_development_dependency 'bundle-audit', '~> 0.1.0'
34
- spec.add_development_dependency 'fasterer', '~> 0.10.0'
35
- spec.add_development_dependency 'pry-byebug', '~> 3.9'
36
- spec.add_development_dependency 'rake', '~> 13.0'
37
- spec.add_development_dependency 'rspec', '~> 3.10'
38
- spec.add_development_dependency 'rubocop', '~> 1.29'
39
- spec.add_development_dependency 'rubocop-performance', '~> 1.11'
40
- spec.add_development_dependency 'rubocop-rspec', '~> 2.5'
41
32
  end
metadata CHANGED
@@ -1,15 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snfoil-policy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Howes
8
8
  - Cliff Campbell
9
- autorequire:
9
+ autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-05-11 00:00:00.000000000 Z
12
+ date: 2022-10-05 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: 5.2.6
28
- - !ruby/object:Gem::Dependency
29
- name: bundle-audit
30
- requirement: !ruby/object:Gem::Requirement
31
- requirements:
32
- - - "~>"
33
- - !ruby/object:Gem::Version
34
- version: 0.1.0
35
- type: :development
36
- prerelease: false
37
- version_requirements: !ruby/object:Gem::Requirement
38
- requirements:
39
- - - "~>"
40
- - !ruby/object:Gem::Version
41
- version: 0.1.0
42
- - !ruby/object:Gem::Dependency
43
- name: fasterer
44
- requirement: !ruby/object:Gem::Requirement
45
- requirements:
46
- - - "~>"
47
- - !ruby/object:Gem::Version
48
- version: 0.10.0
49
- type: :development
50
- prerelease: false
51
- version_requirements: !ruby/object:Gem::Requirement
52
- requirements:
53
- - - "~>"
54
- - !ruby/object:Gem::Version
55
- version: 0.10.0
56
- - !ruby/object:Gem::Dependency
57
- name: pry-byebug
58
- requirement: !ruby/object:Gem::Requirement
59
- requirements:
60
- - - "~>"
61
- - !ruby/object:Gem::Version
62
- version: '3.9'
63
- type: :development
64
- prerelease: false
65
- version_requirements: !ruby/object:Gem::Requirement
66
- requirements:
67
- - - "~>"
68
- - !ruby/object:Gem::Version
69
- version: '3.9'
70
- - !ruby/object:Gem::Dependency
71
- name: rake
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - "~>"
75
- - !ruby/object:Gem::Version
76
- version: '13.0'
77
- type: :development
78
- prerelease: false
79
- version_requirements: !ruby/object:Gem::Requirement
80
- requirements:
81
- - - "~>"
82
- - !ruby/object:Gem::Version
83
- version: '13.0'
84
- - !ruby/object:Gem::Dependency
85
- name: rspec
86
- requirement: !ruby/object:Gem::Requirement
87
- requirements:
88
- - - "~>"
89
- - !ruby/object:Gem::Version
90
- version: '3.10'
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '3.10'
98
- - !ruby/object:Gem::Dependency
99
- name: rubocop
100
- requirement: !ruby/object:Gem::Requirement
101
- requirements:
102
- - - "~>"
103
- - !ruby/object:Gem::Version
104
- version: '1.29'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - "~>"
110
- - !ruby/object:Gem::Version
111
- version: '1.29'
112
- - !ruby/object:Gem::Dependency
113
- name: rubocop-performance
114
- requirement: !ruby/object:Gem::Requirement
115
- requirements:
116
- - - "~>"
117
- - !ruby/object:Gem::Version
118
- version: '1.11'
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - "~>"
124
- - !ruby/object:Gem::Version
125
- version: '1.11'
126
- - !ruby/object:Gem::Dependency
127
- name: rubocop-rspec
128
- requirement: !ruby/object:Gem::Requirement
129
- requirements:
130
- - - "~>"
131
- - !ruby/object:Gem::Version
132
- version: '2.5'
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - "~>"
138
- - !ruby/object:Gem::Version
139
- version: '2.5'
140
28
  description: A set of helper functions to build permission files inspired by Pundit.
141
29
  email:
142
30
  - howeszy@gmail.com
@@ -146,6 +34,7 @@ extensions: []
146
34
  extra_rdoc_files: []
147
35
  files:
148
36
  - CHANGELOG.md
37
+ - CODE_GOALS.md
149
38
  - CODE_OF_CONDUCT.md
150
39
  - Gemfile
151
40
  - LICENSE.txt
@@ -161,7 +50,7 @@ metadata:
161
50
  source_code_uri: https://github.com/limited-effort/snfoil-policy
162
51
  changelog_uri: https://github.com/limited-effort/snfoil-policy/blob/main/CHANGELOG.md
163
52
  rubygems_mfa_required: 'true'
164
- post_install_message:
53
+ post_install_message:
165
54
  rdoc_options: []
166
55
  require_paths:
167
56
  - lib
@@ -169,15 +58,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
169
58
  requirements:
170
59
  - - ">="
171
60
  - !ruby/object:Gem::Version
172
- version: '2.7'
61
+ version: '2.6'
173
62
  required_rubygems_version: !ruby/object:Gem::Requirement
174
63
  requirements:
175
64
  - - ">="
176
65
  - !ruby/object:Gem::Version
177
66
  version: '0'
178
67
  requirements: []
179
- rubygems_version: 3.1.6
180
- signing_key:
68
+ rubygems_version: 3.3.7
69
+ signing_key:
181
70
  specification_version: 4
182
71
  summary: Pundit Style Permissions Builder
183
72
  test_files: []