snfoil-policy 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a6dab1a607349ecc86d023e26ad1d9ba97e96e57318cd129bafef7589b125e1e
4
- data.tar.gz: 66fabe2a19f859d6cd50b707987ee34f51e0e85a19abe8fb2e16e880a570f16b
3
+ metadata.gz: b3899818db44a4cf74b5e3d1e46c5006cb1464fc1e9328df96611416f8018206
4
+ data.tar.gz: 41a79abc893070478fb79beef63d297c2220daf506a253f15e0a68fb7cf17af5
5
5
  SHA512:
6
- metadata.gz: 2f4dca9af08516db9b3abfd4075eb568adf576c27da6d2e1a372b93e33a72d9fd0753d07a4700d65f8ef5dc683c1d894e1f48127a46dbcb88ed92e62465f50dd
7
- data.tar.gz: 64e48295ab0086b1291ea394e44d93a5859c22a1f9e0c1652621cce81f788734897fd8b254c4c5afbaaaf3dad69003737b8387a01a1c663971aba4fbf87be04b
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.1'
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
@@ -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.33'
39
- spec.add_development_dependency 'rubocop-performance', '1.14.3'
40
- spec.add_development_dependency 'rubocop-rspec', '2.12.1'
41
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: snfoil-policy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Howes
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2022-08-08 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.33'
105
- type: :development
106
- prerelease: false
107
- version_requirements: !ruby/object:Gem::Requirement
108
- requirements:
109
- - - '='
110
- - !ruby/object:Gem::Version
111
- version: '1.33'
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.14.3
119
- type: :development
120
- prerelease: false
121
- version_requirements: !ruby/object:Gem::Requirement
122
- requirements:
123
- - - '='
124
- - !ruby/object:Gem::Version
125
- version: 1.14.3
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.12.1
133
- type: :development
134
- prerelease: false
135
- version_requirements: !ruby/object:Gem::Requirement
136
- requirements:
137
- - - '='
138
- - !ruby/object:Gem::Version
139
- version: 2.12.1
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
@@ -176,7 +65,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
176
65
  - !ruby/object:Gem::Version
177
66
  version: '0'
178
67
  requirements: []
179
- rubygems_version: 3.1.6
68
+ rubygems_version: 3.3.7
180
69
  signing_key:
181
70
  specification_version: 4
182
71
  summary: Pundit Style Permissions Builder