Class: LogicalAuthz::AccessControl::Policy

Inherits:
Object
  • Object
show all
Defined in:
lib/logical_authz/access_control.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initializePolicy

Returns a new instance of Policy.



116
117
118
119
# File 'lib/logical_authz/access_control.rb', line 116

def initialize
  @decision = false
  @name = default_name
end

Instance Attribute Details

#decisionObject

Returns the value of attribute decision.



125
126
127
# File 'lib/logical_authz/access_control.rb', line 125

def decision
  @decision
end

#nameObject

Returns the value of attribute name.



125
126
127
# File 'lib/logical_authz/access_control.rb', line 125

def name
  @name
end

Class Method Details

.namesObject



149
150
151
# File 'lib/logical_authz/access_control.rb', line 149

def names
  @names ||= {}
end

.register(name) ⇒ Object



153
154
155
156
157
158
# File 'lib/logical_authz/access_control.rb', line 153

def register(name)
  Policy.names[name.to_sym] = self
  Policy.names["if_#{name}".to_sym] = self

  AccessControl::Builder.register_policy_class(name, self)
end

Instance Method Details

#check(criteria) ⇒ Object

Raises:

  • (NotImplementedException)


131
132
133
# File 'lib/logical_authz/access_control.rb', line 131

def check(criteria)
  raise NotImplementedException
end

#default_nameObject



127
128
129
# File 'lib/logical_authz/access_control.rb', line 127

def default_name
  "Unknown Rule"
end

#evaluate(criteria) ⇒ Object



135
136
137
138
139
140
141
142
143
144
145
146
# File 'lib/logical_authz/access_control.rb', line 135

def evaluate(criteria)
  laz_debug{"Rule being examined: #{self.inspect}"}
  if check(criteria) == true
    laz_debug{"Rule: #@name triggered - authorization allowed: #@decision"}
    return @decision
  else
    return nil
  end
rescue Object => ex
  Rails.logger.info{ "Exception raised checking rule \"#@name\": #{ex.class.name}: #{ex.message} @ #{ex.backtrace[0..2].inspect}" }
  return false
end

#laz_debugObject



121
122
123
# File 'lib/logical_authz/access_control.rb', line 121

def laz_debug
  LogicalAuthz::laz_debug{yield} if block_given?
end