Class: Console1984::SessionsLogger::Database

Inherits:
Object
  • Object
show all
Includes:
Freezeable
Defined in:
lib/console1984/sessions_logger/database.rb

Overview

A session logger that saves audit trails in the database.

Instance Attribute Summary collapse

Instance Method Summary collapse

Methods included from Freezeable

freeze_all, included

Instance Attribute Details

#current_sensitive_accessObject (readonly)

Returns the value of attribute current_sensitive_access.



5
6
7
# File 'lib/console1984/sessions_logger/database.rb', line 5

def current_sensitive_access
  @current_sensitive_access
end

#current_sessionObject (readonly)

Returns the value of attribute current_session.



5
6
7
# File 'lib/console1984/sessions_logger/database.rb', line 5

def current_session
  @current_session
end

Instance Method Details

#after_executing(statements) ⇒ Object



36
37
# File 'lib/console1984/sessions_logger/database.rb', line 36

def after_executing(statements)
end

#before_executing(statements) ⇒ Object



29
30
31
32
33
34
# File 'lib/console1984/sessions_logger/database.rb', line 29

def before_executing(statements)
  silence_logging_and_ensure_connected do
    @before_commands_count = @current_session.commands.count
    record_statements statements
  end
end

#end_sensitive_accessObject



25
26
27
# File 'lib/console1984/sessions_logger/database.rb', line 25

def end_sensitive_access
  @current_sensitive_access = nil
end

#finish_sessionObject



14
15
16
17
# File 'lib/console1984/sessions_logger/database.rb', line 14

def finish_session
  @current_session = nil
  @current_sensitive_access = nil
end

#start_sensitive_access(justification) ⇒ Object



19
20
21
22
23
# File 'lib/console1984/sessions_logger/database.rb', line 19

def start_sensitive_access(justification)
  silence_logging_and_ensure_connected do
    @current_sensitive_access = current_session.sensitive_accesses.create! justification: justification
  end
end

#start_session(username, reason) ⇒ Object



7
8
9
10
11
12
# File 'lib/console1984/sessions_logger/database.rb', line 7

def start_session(username, reason)
  silence_logging_and_ensure_connected do
    user = Console1984::User.find_or_create_by!(username: username)
    @current_session = user.sessions.create!(reason: reason)
  end
end

#suspicious_commands_attempted(statements) ⇒ Object



39
40
41
42
43
44
# File 'lib/console1984/sessions_logger/database.rb', line 39

def suspicious_commands_attempted(statements)
  silence_logging_and_ensure_connected do
    sensitive_access = start_sensitive_access "Suspicious commands attempted"
    Console1984::Command.last.update! sensitive_access: sensitive_access
  end
end