Class: Authorization::Reader::PrivilegesReader
- Inherits:
-
Object
- Object
- Authorization::Reader::PrivilegesReader
- Defined in:
- lib/declarative_authorization/reader.rb
Overview
The PrivilegeReader handles the part of the authorization DSL in a privileges
block. Here, privilege hierarchies are defined.
Instance Attribute Summary collapse
-
#privilege_hierarchy ⇒ Object
readonly
TODO handle privileges with separated context.
-
#privileges ⇒ Object
readonly
TODO handle privileges with separated context.
Instance Method Summary collapse
-
#append_privilege(priv) ⇒ Object
:nodoc:.
-
#includes(*privileges) ⇒ Object
Specifies
privileges
that are to be assigned as lower ones. -
#initialize ⇒ PrivilegesReader
constructor
:nodoc:.
-
#initialize_copy(from) ⇒ Object
:nodoc:.
-
#privilege(privilege, context = nil, options = {}, &block) ⇒ Object
Defines part of a privilege hierarchy.
Constructor Details
#initialize ⇒ PrivilegesReader
:nodoc:
139 140 141 142 143 144 145 |
# File 'lib/declarative_authorization/reader.rb', line 139 def initialize # :nodoc: @current_priv = nil @current_context = nil @privileges = [] # {priv => [[priv,ctx], ...]} @privilege_hierarchy = {} end |
Instance Attribute Details
#privilege_hierarchy ⇒ Object (readonly)
TODO handle privileges with separated context
137 138 139 |
# File 'lib/declarative_authorization/reader.rb', line 137 def privilege_hierarchy @privilege_hierarchy end |
#privileges ⇒ Object (readonly)
TODO handle privileges with separated context
137 138 139 |
# File 'lib/declarative_authorization/reader.rb', line 137 def privileges @privileges end |
Instance Method Details
#append_privilege(priv) ⇒ Object
:nodoc:
152 153 154 |
# File 'lib/declarative_authorization/reader.rb', line 152 def append_privilege(priv) # :nodoc: @privileges << priv unless @privileges.include?(priv) end |
#includes(*privileges) ⇒ Object
Specifies privileges
that are to be assigned as lower ones. Only to be used inside a privilege block.
178 179 180 181 182 183 184 185 186 |
# File 'lib/declarative_authorization/reader.rb', line 178 def includes(*privileges) raise DSLError, "includes only in privilege block" if @current_priv.nil? privileges.each do |priv| priv = priv.to_sym append_privilege priv @privilege_hierarchy[@current_priv] ||= [] @privilege_hierarchy[@current_priv] << [priv, @current_context] end end |
#initialize_copy(from) ⇒ Object
:nodoc:
147 148 149 150 |
# File 'lib/declarative_authorization/reader.rb', line 147 def initialize_copy(from) # :nodoc: @privileges = from.privileges.clone @privilege_hierarchy = from.privilege_hierarchy.clone end |
#privilege(privilege, context = nil, options = {}, &block) ⇒ Object
Defines part of a privilege hierarchy. For the given privilege
, included privileges may be defined in the block (through includes) or as option :includes
. If the optional context is given, the privilege hierarchy is limited to that context.
161 162 163 164 165 166 167 168 169 170 171 172 173 174 |
# File 'lib/declarative_authorization/reader.rb', line 161 def privilege(privilege, context = nil, = {}, &block) if context.is_a?(Hash) = context context = nil end @current_priv = privilege @current_context = context append_privilege privilege instance_eval(&block) if block includes(*[:includes]) if [:includes] ensure @current_priv = nil @current_context = nil end |