Class: DecisionAgent::Audit::InMemoryAccessAdapter
- Inherits:
-
AccessAdapter
- Object
- Adapter
- AccessAdapter
- DecisionAgent::Audit::InMemoryAccessAdapter
- Defined in:
- lib/decision_agent/auth/access_audit_logger.rb
Instance Method Summary collapse
- #all_logs ⇒ Object
- #clear ⇒ Object
-
#initialize ⇒ InMemoryAccessAdapter
constructor
A new instance of InMemoryAccessAdapter.
- #query_access_logs(filters = {}) ⇒ Object
- #record_access(log_entry) ⇒ Object
Methods inherited from Adapter
Constructor Details
#initialize ⇒ InMemoryAccessAdapter
Returns a new instance of InMemoryAccessAdapter.
75 76 77 78 79 |
# File 'lib/decision_agent/auth/access_audit_logger.rb', line 75 def initialize super @logs = [] @mutex = Mutex.new end |
Instance Method Details
#all_logs ⇒ Object
111 112 113 114 115 |
# File 'lib/decision_agent/auth/access_audit_logger.rb', line 111 def all_logs @mutex.synchronize do @logs.dup end end |
#clear ⇒ Object
117 118 119 120 121 |
# File 'lib/decision_agent/auth/access_audit_logger.rb', line 117 def clear @mutex.synchronize do @logs.clear end end |
#query_access_logs(filters = {}) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 |
# File 'lib/decision_agent/auth/access_audit_logger.rb', line 87 def query_access_logs(filters = {}) @mutex.synchronize do results = @logs.dup results.select! { |log| log[:user_id] == filters[:user_id] } if filters[:user_id] results.select! { |log| log[:event_type] == filters[:event_type].to_s } if filters[:event_type] if filters[:start_time] start_time = filters[:start_time].is_a?(String) ? Time.parse(filters[:start_time]) : filters[:start_time] results.select! { |log| Time.parse(log[:timestamp]) >= start_time } end if filters[:end_time] end_time = filters[:end_time].is_a?(String) ? Time.parse(filters[:end_time]) : filters[:end_time] results.select! { |log| Time.parse(log[:timestamp]) <= end_time } end results = results.last(filters[:limit]) if filters[:limit] results.reverse # Most recent first end end |
#record_access(log_entry) ⇒ Object
81 82 83 84 85 |
# File 'lib/decision_agent/auth/access_audit_logger.rb', line 81 def record_access(log_entry) @mutex.synchronize do @logs << log_entry.dup end end |