From bae9332dc2f332c745e2be22850e610f1263dea2 Mon Sep 17 00:00:00 2001 From: Darin McBride Date: Thu, 18 Dec 2014 08:04:14 -0700 Subject: [PATCH] Track which admin becomes which user for audit purposes. --- lib/Lacuna/DB/Result/Empire.pm | 3 +-- lib/Lacuna/Session.pm | 11 ++++++++++- lib/Lacuna/Web/Admin.pm | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/lib/Lacuna/DB/Result/Empire.pm b/lib/Lacuna/DB/Result/Empire.pm index 1290cb23..1d337dcf 100644 --- a/lib/Lacuna/DB/Result/Empire.pm +++ b/lib/Lacuna/DB/Result/Empire.pm @@ -488,8 +488,7 @@ sub get_status { sub start_session { my ($self, $options) = @_; if ( $options - && $options->{api_key} - && $options->{api_key} ne 'admin_console' ) + && !$options->{is_admin} ) { $self->last_login(DateTime->now); $self->update; diff --git a/lib/Lacuna/Session.pm b/lib/Lacuna/Session.pm index 0aea269e..479af5b3 100644 --- a/lib/Lacuna/Session.pm +++ b/lib/Lacuna/Session.pm @@ -21,6 +21,7 @@ sub BUILD { $self->empire_id($session_data->{empire_id}); $self->extended($session_data->{extended}); $self->is_sitter($session_data->{is_sitter}); + $self->is_from_admin($session_data->{is_from_admin}); } } @@ -38,6 +39,11 @@ has is_sitter => ( default => 0, ); +has is_from_admin => ( + is => 'rw', + default => 0, +); + has empire_id => ( is => 'rw', predicate => 'has_empire_id', @@ -83,7 +89,8 @@ sub extend { api_key => $self->api_key, extended => $self->extended, is_sitter => $self->is_sitter, - }, + is_from_admin => $self->is_from_admin, + }, 60 * 60 * 2, ); return $self; @@ -107,6 +114,7 @@ sub start { $self->empire_id($empire->id); $self->api_key($options->{api_key}); $self->is_sitter($options->{is_sitter}); + $self->is_from_admin($options->{is_from_admin}); $empire->current_session($self); $self->empire($empire); my $ip; @@ -120,6 +128,7 @@ sub start { ip_address => $ip, session_id => $self->id, is_sitter => $options->{is_sitter} ? 1 : 0, + # is_from_admin => $options->{is_from_admin} <-- probably not needed })->insert; return $self->extend; } diff --git a/lib/Lacuna/Web/Admin.pm b/lib/Lacuna/Web/Admin.pm index 49c3d1f4..78e57f45 100644 --- a/lib/Lacuna/Web/Admin.pm +++ b/lib/Lacuna/Web/Admin.pm @@ -890,7 +890,7 @@ sub www_become_empire { } my $uri = Lacuna->config->get('server_url'); $uri .= '#session_id=%s'; - $uri = sprintf $uri, $empire->start_session({ api_key => 'admin_console' })->id; + $uri = sprintf $uri, $empire->start_session({ is_admin => $request->user, api_key => 'admin:' . $request->user })->id; [$uri, { status => 302 } ] } -- 2.51.2