crewd_policies 0.3.0 → 0.3.1

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
  SHA1:
3
- metadata.gz: da58fbf9df8d461a914137bab938033f4efee6a0
4
- data.tar.gz: b553dbabc6208daa598cabb5b727e9bfec5080b1
3
+ metadata.gz: e00be59f41afaf3cee180c45ff49150983ea0a61
4
+ data.tar.gz: 50a550704ad57460802ad00f9363cd60d80566a6
5
5
  SHA512:
6
- metadata.gz: 638f046880f1001e59df48d61dba5300d4fcdaf2a5d8e2c0d3a5d14c832519afd69ec939d2e66e2aafd0fefe808fe1cdfce4c2a742fbb3ca2ca3473133326c0b
7
- data.tar.gz: 02aa2ac5d8dc3f9aaf3df456a0ed96a75ec37121cecb2713ac67ae2c0b4a6886b3c521a4b6e6caa7bf197c830ff1ea7526453e40b6b51c64285813927ffd4662
6
+ metadata.gz: 91468f165e3a89c323cd3c91642d1de2202733cd1ba92f7a6f556733f975cb3d3991a853e79f53fa307013b2fcef6285b5f4b818dd9723d827c60dcdc74c1b6c
7
+ data.tar.gz: 40987e4fb0a168c219da4cb89a0810f08f06c15c103fd086c4c5c9c479018b927237bcb0276469e1065757514f707f90b6a550bc1b59285848217af95c6358d5
@@ -3,8 +3,8 @@
3
3
  module CrewdPolicies::Model
4
4
 
5
5
  def self.included(aClass)
6
- aClass.cattr_accessor :roles_rules
7
- aClass.roles_rules = {} # [:sales] => [
6
+ aClass.class_attribute :roles_rules, instance_predicate: false, instance_accessor: false
7
+ aClass.roles_rules ||= {} # [:sales] => [
8
8
  # {ability: 'read', fields: [:name,:address]}
9
9
  # {ability: 'destroy', allowed: true}
10
10
  # ]
@@ -13,6 +13,10 @@ module CrewdPolicies::Model
13
13
 
14
14
  module ClassMethods
15
15
 
16
+ def dup_roles_rules(aRR)
17
+ aRR.deep_dup # provided by Rails
18
+ end
19
+
16
20
  # supports different formats : allow <role>, <abilities> => <attributes>
17
21
  #
18
22
  # allow :sales, :write => [:name,:address] ie. sales can write the name and address fields
@@ -25,6 +29,11 @@ module CrewdPolicies::Model
25
29
  aRole = aRole.to_s
26
30
  raise ::StandardExceptions::Http::InternalServerError.new "aAbilities must be a Hash" unless aAbilities.is_a? Hash # eg. :write => [:name,:address]
27
31
 
32
+ # these lines inherit roles_rules from parent classes, then dup them so the parent doesn't get modified
33
+ superclass_rr = self.superclass && self.superclass.respond_to?(:roles_rules) && self.superclass.roles_rules
34
+ inheriting_rr = self.roles_rules && superclass_rr && (self.roles_rules.equal? superclass_rr)
35
+ self.roles_rules = dup_roles_rules(self.roles_rules) if inheriting_rr
36
+
28
37
  role_rules = (self.roles_rules[aRole] ||= [])
29
38
  conditions = {}
30
39
  conditions[:if] = aAbilities.delete(:if) if aAbilities.include?(:if)
@@ -1,3 +1,3 @@
1
1
  module CrewdPolicies
2
- VERSION = "0.3.0"
2
+ VERSION = "0.3.1"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: crewd_policies
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary McGhee