FEATURE #1532: add ip and user agent into logged information

This commit is contained in:
Michal Kváček
2016-04-03 02:13:46 +02:00
parent 9f8eb230e8
commit 7de45fe377
6 changed files with 121 additions and 38 deletions
+3 -1
View File
@@ -3,9 +3,9 @@
namespace App\Listeners;
use App\Enumerations\ActionLogTypesForLogger;
use App\Events\Event;
use App\Models\ActionLog;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Request;
abstract class Logger
{
@@ -43,6 +43,8 @@ abstract class Logger
$data = [
'user_id' => $userId,
'type_id' => $typeId,
'ip' => request()->ip(),
'user_agent' => request()->header('User-agent'),
'parameters' => json_encode((array)$parameters)
];
+2
View File
@@ -15,6 +15,8 @@ class ActionLog extends Model
protected $fillable = [
'type_id',
'user_id',
'ip',
'user_agent',
'parameters'
];
protected $guarded = [];
@@ -0,0 +1,38 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
class AddIpAndUserAgentIntoLog extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('action_log', function (Blueprint $table) {
$table->string('ip')
->after('user_id')
->comment('User\'s IP Address');
$table->mediumText('user_agent')
->after('ip')
->comment('Browser string of client, who performed some action.');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('action_log', function (Blueprint $table) {
$table->dropColumn('ip');
$table->dropColumn('user_agent');
});
}
}
+18 -6
View File
@@ -27,15 +27,27 @@ class SeedActionLogTypes extends Seeder
'removeWidgetFromArea',
'editWidget',
'editWidgetArea',
'invalidEditContentAttempt',
'createNewContent',
'deleteContent',
'publishContent',
'draftFromContent',
'editContent',
'setHomepage',
];
foreach ($types as $type) {
\DB::table('action_log_types')
->insert([
'string_id' => $type,
'name' => 'admin/actionLog.name' . ucfirst($type),
'value' => 'admin/actionLog.' . $type
]);
try {
\DB::table('action_log_types')
->insert([
'string_id' => $type,
'name' => 'admin/actionLog.name' . ucfirst($type),
'value' => 'admin/actionLog.' . $type
]);
} catch (Exception $e) {
// ignore exception
echo $type . ' already seeded' . "\n";
}
}
}
}
+46 -29
View File
@@ -1,33 +1,50 @@
<?php
return [
'overview' => 'List of all actions',
'login' => 'Logged in',
'logout' => 'Logged out',
'userEdit' => 'Updated user :name (:email)',
'newCustomField' => 'Added new custom field with ID #:id and name ":name"',
'editCustomField' => 'Edited custom field with ID #:id and name ":name"',
'deleteCustomField' => 'Deleted custom field ID #:id and name ":name"',
'changeSettings' => 'Changes settings',
'assignWidget' => 'Assigned widget :widgetName (#:widgetId) into widget area :widgetAreaName (#:widgetAreaId)',
'deleteWidgetArea' => 'Deleted widget area :name',
'newWidgetArea' => 'Created new widget area :name (#:id) with description ":description"',
'newWidget' => 'Created new widget of type :type with :name (#:id) and description ":description".',
'removeWidgetFromArea' => 'Removed widget :widgetName (#:widgetId) from widget area :widgetAreaName (#:widgetAreaId)',
'editWidget' => 'Edited widget :name (#:id)',
'editWidgetArea' => 'Edited widget area :name (#:id) with description ":description"',
'ip' => 'IP address',
'userAgent' => 'Browser identification',
'overview' => 'List of all actions',
'login' => 'Logged in',
'logout' => 'Logged out',
'userEdit' => 'Updated user :name (:email)',
'newCustomField' => 'Added new custom field with ID #:id and name ":name"',
'editCustomField' => 'Edited custom field with ID #:id and name ":name"',
'deleteCustomField' => 'Deleted custom field ID #:id and name ":name"',
'changeSettings' => 'Changes settings',
'assignWidget' => 'Assigned widget :widgetName (#:widgetId) into widget area :widgetAreaName (#:widgetAreaId)',
'deleteWidgetArea' => 'Deleted widget area :name',
'newWidgetArea' => 'Created new widget area :name (#:id) with description ":description"',
'newWidget' => 'Created new widget of type :type with :name (#:id) and description ":description".',
'removeWidgetFromArea' => 'Removed widget :widgetName (#:widgetId) from widget area :widgetAreaName (#:widgetAreaId)',
'editWidget' => 'Edited widget :name (#:id)',
'editWidgetArea' => 'Edited widget area :name (#:id) with description ":description"',
'invalidEditContentAttempt' => 'Tried to edit content with ID :contentId',
'createNewContent' => 'Created new content page. Title <strong>:title</strong>, url :url, ID: #:id',
'deleteContent' => 'Deleted page ":title", url :url, ID #:id. This change is recorded in revision :revision.',
'publishContent' => 'Published page ":title" (url :url, ID #:id). Change revision: :revision.',
'draftFromContent' => 'Made draft from page ":title" (url :url, ID #:id). Change revision: :revision.',
'editContent' => 'Edited page - new title is ":title", url :url and ID #:id. Change revision: :revision.',
'setHomepage' => 'New homepage: page :title, url: :url and ID #:id. Change revision: :revision.',
// list of names
'nameLogin' => 'Login',
'nameLogout' => 'Log out',
'nameUserEdit' => 'Edit user',
'nameNewCustomField' => 'New custom field',
'nameEditCustomField' => 'Edit custom field',
'nameDeleteCustomField' => 'Delete custom field',
'nameChangeSettings' => 'Change settings',
'nameAssignWidget' => 'Assign widget',
'nameDeleteWidgetArea' => 'Delete widget area',
'nameNewWidgetArea' => 'Create widget area',
'nameNewWidget' => 'New widget',
'nameRemoveWidgetFromArea' => 'Remove widget from area',
'nameEditWidget' => 'Edit widget',
'nameEditWidgetArea' => 'Edit widget area',
'nameLogin' => 'Login',
'nameLogout' => 'Log out',
'nameUserEdit' => 'Edit user',
'nameNewCustomField' => 'New custom field',
'nameEditCustomField' => 'Edit custom field',
'nameDeleteCustomField' => 'Delete custom field',
'nameChangeSettings' => 'Change settings',
'nameAssignWidget' => 'Assign widget',
'nameDeleteWidgetArea' => 'Delete widget area',
'nameNewWidgetArea' => 'Create widget area',
'nameNewWidget' => 'New widget',
'nameRemoveWidgetFromArea' => 'Remove widget from area',
'nameEditWidget' => 'Edit widget',
'nameEditWidgetArea' => 'Edit widget area',
'nameInvalidEditContentAttempt' => 'Tried to edit invalid page',
'nameCreateNewContent' => 'Created new page',
'nameDeleteContent' => 'Deleted page',
'namePublishContent' => 'Published page',
'nameDraftFromContent' => 'Made draft from published page',
'nameEditContent' => 'Edited content',
'nameSetHomepage' => 'Set homepage',
];
@@ -21,13 +21,25 @@
<div class="accordion-content" data-tab-content>
<div class="row">
<div class="column large-1 text-center">
<img src="{{\App\Helpers\Gravatar::img($action->email, 70)}}" alt="{{$action->email}}" />
<img src="{{\App\Helpers\Gravatar::img($action->email, 70)}}"
alt="{{$action->email}}" />
<p>
{{$action->user_name}}<br />
{{date('G:i', strtotime($action->created_at))}}</p>
</div>
<div class="column large-11">
{{$action->value}}
<div class="row column">
{{$action->value}}
</div>
<div class="clearfix"></div>
<div class="row column">
<p>
<strong>@lang('admin/actionLog.ip')</strong>: {{$action->ip}},
<br />
<strong>@lang('admin/actionLog.userAgent')</strong>: {{$action->user_agent}}
</p>
</div>
</div>
</div>
</div>