From 5cf0c99e32ea90e807e8025e72fead8747e47870 Mon Sep 17 00:00:00 2001
From: Zero <john.royer@gmail.com>
Date: Fri, 27 Aug 2021 12:18:50 +0800
Subject: [PATCH 1/5] Add IP column

---
 ...1_044614_add_column_ip_into_activities.php | 35 +++++++++++++++++++
 1 file changed, 35 insertions(+)
 create mode 100644 database/migrations/2021_08_21_044614_add_column_ip_into_activities.php

diff --git a/database/migrations/2021_08_21_044614_add_column_ip_into_activities.php b/database/migrations/2021_08_21_044614_add_column_ip_into_activities.php
new file mode 100644
index 000000000..97cc2c039
--- /dev/null
+++ b/database/migrations/2021_08_21_044614_add_column_ip_into_activities.php
@@ -0,0 +1,35 @@
+<?php
+
+use Illuminate\Database\Migrations\Migration;
+use Illuminate\Database\Schema\Blueprint;
+use Illuminate\Support\Facades\Schema;
+
+class AddColumnIpIntoActivities extends Migration
+{
+    /**
+     * Run the migrations.
+     *
+     * @return void
+     */
+    public function up()
+    {
+        Schema::table('activities', function (Blueprint $table) {
+            $table->string('ip', 45)->after('user_id');
+
+            $table->index(['ip'], 'user_ip_idx');
+        });
+    }
+
+    /**
+     * Reverse the migrations.
+     *
+     * @return void
+     */
+    public function down()
+    {
+        Schema::table('activities', function (Blueprint $table) {
+            $table->dropIndex('user_ip_idx');
+            $table->dropColumn('ip');
+        });
+    }
+}

From 8efaeb068b89de5181e38368fe592fbd555d07be Mon Sep 17 00:00:00 2001
From: Zero <john.royer@gmail.com>
Date: Fri, 27 Aug 2021 12:42:02 +0800
Subject: [PATCH 2/5] Save user IP to audit log

---
 app/Actions/ActivityService.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/app/Actions/ActivityService.php b/app/Actions/ActivityService.php
index dce7dc7b2..87cb075ae 100644
--- a/app/Actions/ActivityService.php
+++ b/app/Actions/ActivityService.php
@@ -11,6 +11,7 @@ use BookStack\Interfaces\Loggable;
 use Illuminate\Database\Eloquent\Builder;
 use Illuminate\Database\Eloquent\Relations\Relation;
 use Illuminate\Support\Facades\Log;
+use Illuminate\Support\Facades\Request;
 
 class ActivityService
 {
@@ -58,6 +59,7 @@ class ActivityService
         return $this->activity->newInstance()->forceFill([
             'type'     => strtolower($type),
             'user_id'  => user()->id,
+            'ip' => Request::ip(),
         ]);
     }
 

From b834f58e87b56e34799df5456636c4d88c37486c Mon Sep 17 00:00:00 2001
From: Zero <john.royer@gmail.com>
Date: Fri, 27 Aug 2021 12:53:47 +0800
Subject: [PATCH 3/5] Add user IP into audit table

---
 resources/views/settings/audit.blade.php | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/resources/views/settings/audit.blade.php b/resources/views/settings/audit.blade.php
index 7a66cc3f3..b1de77567 100644
--- a/resources/views/settings/audit.blade.php
+++ b/resources/views/settings/audit.blade.php
@@ -62,6 +62,7 @@
                     <a href="{{ sortUrl('/settings/audit', $listDetails, ['sort' => 'key']) }}">{{ trans('settings.audit_table_event') }}</a>
                 </th>
                 <th>{{ trans('settings.audit_table_related') }}</th>
+                <th>{{ trans('settings.audit_table_user_ip') }}</th>
                 <th>
                     <a href="{{ sortUrl('/settings/audit', $listDetails, ['sort' => 'created_at']) }}">{{ trans('settings.audit_table_date') }}</a></th>
             </tr>
@@ -88,6 +89,7 @@
                             <div class="px-m">{{ $activity->detail }}</div>
                         @endif
                     </td>
+                    <td>{{ $activity->ip }}</td>
                     <td>{{ $activity->created_at }}</td>
                 </tr>
             @endforeach

From 64188241393fa8fab4b564a789541705b70ae5a0 Mon Sep 17 00:00:00 2001
From: Zero <john.royer@gmail.com>
Date: Fri, 27 Aug 2021 12:54:18 +0800
Subject: [PATCH 4/5] Update translation file

---
 resources/lang/en/settings.php | 1 +
 1 file changed, 1 insertion(+)

diff --git a/resources/lang/en/settings.php b/resources/lang/en/settings.php
index 4c1ae1345..d4feb2e7c 100755
--- a/resources/lang/en/settings.php
+++ b/resources/lang/en/settings.php
@@ -117,6 +117,7 @@ return [
     'audit_deleted_item' => 'Deleted Item',
     'audit_deleted_item_name' => 'Name: :name',
     'audit_table_user' => 'User',
+    'audit_table_user_ip' => 'User IP',
     'audit_table_event' => 'Event',
     'audit_table_related' => 'Related Item or Detail',
     'audit_table_date' => 'Activity Date',

From c0da5616f3a5805238a48bedb5b011c6cdbc397c Mon Sep 17 00:00:00 2001
From: Zero <john.royer@gmail.com>
Date: Thu, 23 Sep 2021 11:07:13 +0800
Subject: [PATCH 5/5] Fix coding style

---
 app/Actions/ActivityService.php | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/app/Actions/ActivityService.php b/app/Actions/ActivityService.php
index 87cb075ae..b2a4a132f 100644
--- a/app/Actions/ActivityService.php
+++ b/app/Actions/ActivityService.php
@@ -59,7 +59,7 @@ class ActivityService
         return $this->activity->newInstance()->forceFill([
             'type'     => strtolower($type),
             'user_id'  => user()->id,
-            'ip' => Request::ip(),
+            'ip'       => Request::ip(),
         ]);
     }