Module: Checkin::Dsl::Permissions::ClassMethods
- Defined in:
- lib/checkin/dsl/permissions.rb
Instance Method Summary collapse
- #_actions_from_options(args, opts) ⇒ Object
- #_add_rule_to_current_attributes_block(kind, *args) ⇒ Object
- #_add_rule_to_current_rule_block(kind, *args) ⇒ Object
- #_current_attributes_block ⇒ Object
- #_current_options ⇒ Object
- #_current_rule_block ⇒ Object
- #_reset_current_attributes_block ⇒ Object
- #_reset_current_options ⇒ Object
- #_reset_current_rule_block ⇒ Object
- #_roles_from_options(args, opts) ⇒ Object
- #add_attribute_rules_block(rules) ⇒ Object
- #add_rule_block(rules) ⇒ Object
- #allow(*args) ⇒ Object
- #attribute_rules ⇒ Object
- #deny(*args) ⇒ Object
- #permissions(*args) ⇒ Object
- #permissions_to_set(*args) ⇒ Object
- #rules ⇒ Object
- #scope(scope, &block) ⇒ Object
Instance Method Details
#_actions_from_options(args, opts) ⇒ Object
154 155 156 |
# File 'lib/checkin/dsl/permissions.rb', line 154 def (args, opts) [ opts[:to] ].flatten.compact.uniq.map {|a| "#{a}".to_sym} end |
#_add_rule_to_current_attributes_block(kind, *args) ⇒ Object
142 143 144 145 146 147 148 149 150 151 152 |
# File 'lib/checkin/dsl/permissions.rb', line 142 def _add_rule_to_current_attributes_block(kind, *args) opts = args. roles = (args, opts) rule = ::Checkin::Rule.new(kind, :resources => [:resources], :roles => roles, :actions_or_attributes => [:attributes], :scope => [:scope]) @_current_attributes_block ||= [] @_current_attributes_block << rule rule end |
#_add_rule_to_current_rule_block(kind, *args) ⇒ Object
121 122 123 124 125 126 127 128 129 130 131 132 |
# File 'lib/checkin/dsl/permissions.rb', line 121 def _add_rule_to_current_rule_block(kind, *args) opts = args. actions = (args, opts) roles = (args, opts) rule = ::Checkin::Rule.new(kind, :resources => [:resources], :roles => roles, :actions_or_attributes => actions, :scope => [:scope]) @_current_rule_block ||= [] @_current_rule_block << rule rule end |
#_current_attributes_block ⇒ Object
134 135 136 |
# File 'lib/checkin/dsl/permissions.rb', line 134 def _current_attributes_block @_current_attributes_block ||= [] end |
#_current_options ⇒ Object
102 103 104 |
# File 'lib/checkin/dsl/permissions.rb', line 102 def ||= ::ActiveSupport::HashWithIndifferentAccess.new end |
#_current_rule_block ⇒ Object
113 114 115 |
# File 'lib/checkin/dsl/permissions.rb', line 113 def _current_rule_block @_current_rule_block ||= [] end |
#_reset_current_attributes_block ⇒ Object
138 139 140 |
# File 'lib/checkin/dsl/permissions.rb', line 138 def _reset_current_attributes_block @_current_attributes_block = [] end |
#_reset_current_options ⇒ Object
106 107 108 109 110 111 |
# File 'lib/checkin/dsl/permissions.rb', line 106 def scope = [:scope] = ::ActiveSupport::HashWithIndifferentAccess.new [:scope] = scope end |
#_reset_current_rule_block ⇒ Object
117 118 119 |
# File 'lib/checkin/dsl/permissions.rb', line 117 def _reset_current_rule_block @_current_rule_block = [] end |
#_roles_from_options(args, opts) ⇒ Object
158 159 160 |
# File 'lib/checkin/dsl/permissions.rb', line 158 def (args, opts) args.flatten.compact.uniq.map {|a| "#{a}".singularize.to_sym} end |
#add_attribute_rules_block(rules) ⇒ Object
53 54 55 56 |
# File 'lib/checkin/dsl/permissions.rb', line 53 def add_attribute_rules_block(rules) @attribute_rules ||= [] @attribute_rules = rules + @attribute_rules end |
#add_rule_block(rules) ⇒ Object
44 45 46 47 |
# File 'lib/checkin/dsl/permissions.rb', line 44 def add_rule_block(rules) @rules ||= [] @rules = rules + @rules end |
#allow(*args) ⇒ Object
86 87 88 89 90 91 92 |
# File 'lib/checkin/dsl/permissions.rb', line 86 def allow(*args) if [:mode] == :cascade _add_rule_to_current_rule_block(:allow, *args) elsif [:mode] == :attributes _add_rule_to_current_attributes_block(:allow, *args) end end |
#attribute_rules ⇒ Object
49 50 51 |
# File 'lib/checkin/dsl/permissions.rb', line 49 def attribute_rules @attribute_rules ||= [] end |
#deny(*args) ⇒ Object
94 95 96 97 98 99 100 |
# File 'lib/checkin/dsl/permissions.rb', line 94 def deny(*args) if [:mode] == :cascade _add_rule_to_current_rule_block(:deny, *args) elsif [:mode] == :attributes _add_rule_to_current_attributes_block(:deny, *args) end end |
#permissions(*args) ⇒ Object
64 65 66 67 68 69 70 71 72 |
# File 'lib/checkin/dsl/permissions.rb', line 64 def (*args) [:mode] = :cascade opts = args. [:resources] = [opts[:for]].flatten.compact.uniq.map {|r| "#{r}".singularize.to_sym} yield add_rule_block(_current_rule_block) _reset_current_rule_block end |
#permissions_to_set(*args) ⇒ Object
74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/checkin/dsl/permissions.rb', line 74 def (*args) [:mode] = :attributes opts = args. = opts[:on] [:resources] = [].flatten.compact.uniq.map {|r| "#{r}".singularize.to_sym} [:attributes] = args.flatten yield add_attribute_rules_block(_current_attributes_block) _reset_current_attributes_block end |
#rules ⇒ Object
40 41 42 |
# File 'lib/checkin/dsl/permissions.rb', line 40 def rules @rules ||= [] end |
#scope(scope, &block) ⇒ Object
58 59 60 61 62 |
# File 'lib/checkin/dsl/permissions.rb', line 58 def scope(scope, &block) [:scope] = scope yield .delete(:scope) end |