From 395fb23f6d0339dc1ad044e6a6ce61afe86c9a7e Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Tue, 31 May 2022 12:46:56 +0200
Subject: [PATCH] fixed botoverview

---
 .../Http/Controllers/HumanVerification.php    | 49 ++++--------
 metager/app/Models/HumanVerification.php      | 22 ++++++
 .../humanverification/botOverview.blade.php   | 78 ++++++++++++++++---
 3 files changed, 105 insertions(+), 44 deletions(-)

diff --git a/metager/app/Http/Controllers/HumanVerification.php b/metager/app/Http/Controllers/HumanVerification.php
index 5e2901598..eac448183 100644
--- a/metager/app/Http/Controllers/HumanVerification.php
+++ b/metager/app/Http/Controllers/HumanVerification.php
@@ -183,52 +183,35 @@ class HumanVerification extends Controller
 
     public function botOverview(Request $request)
     {
-        $id = "";
-        $uid = "";
-        $ip = $request->ip();
-        if (\App\Http\Controllers\HumanVerification::couldBeSpammer($ip)) {
-            $id = hash("sha1", "999.999.999.999");
-            $uid = hash("sha1", "999.999.999.999" . $ip . $_SERVER["AGENT"] . "uid");
-        } else {
-            $id = hash("sha1", $ip);
-            $uid = hash("sha1", $ip . $_SERVER["AGENT"] . "uid");
-        }
-
-        $userList = Cache::get(HumanVerification::PREFIX . "." . $id);
-        $user = $userList[$uid];
+        $human_verification = \app()->make(ModelsHumanVerification::class);
 
         return view('humanverification.botOverview')
             ->with('title', "Bot Overview")
-            ->with('ip', $ip)
-            ->with('userList', $userList)
-            ->with('user', $user);
+            ->with('ip', $request->ip())
+            ->with('userList', $human_verification->getUserList())
+            ->with('user', $human_verification->getUser());
     }
 
     public function botOverviewChange(Request $request)
     {
-        $id = "";
-        $uid = "";
-        $ip = $request->ip();
-        if (\App\Http\Controllers\HumanVerification::couldBeSpammer($ip)) {
-            $id = hash("sha1", "999.999.999.999");
-            $uid = hash("sha1", "999.999.999.999" . $ip . $_SERVER["AGENT"] . "uid");
-        } else {
-            $id = hash("sha1", $ip);
-            $uid = hash("sha1", $ip . $_SERVER["AGENT"] . "uid");
-        }
-
-        $userList = Cache::get(HumanVerification::PREFIX . "." . $id);
-        $user = $userList[$uid];
+        $human_verification = \app()->make(ModelsHumanVerification::class);
 
         if ($request->filled("locked")) {
-            $user["locked"] = boolval($request->input('locked'));
+            if (\boolval($request->input("locked"))) {
+                $human_verification->lockUser();
+            } else {
+                $human_verification->unlockUser();
+            }
         } elseif ($request->filled("whitelist")) {
-            $user["whitelist"] = boolval($request->input('whitelist'));
+            if (\boolval($request->input("whitelist"))) {
+                $human_verification->verifyUser();
+            } else {
+                $human_verification->unverifyUser();
+            }
         } elseif ($request->filled("unusedResultPages")) {
-            $user["unusedResultPages"] = intval($request->input('unusedResultPages'));
+            $human_verification->setUnusedResultPage(intval($request->input('unusedResultPages')));
         }
 
-        HumanVerification::saveUser($user);
         return redirect('admin/bot');
     }
 
diff --git a/metager/app/Models/HumanVerification.php b/metager/app/Models/HumanVerification.php
index 0ffe1a680..ffe24c408 100644
--- a/metager/app/Models/HumanVerification.php
+++ b/metager/app/Models/HumanVerification.php
@@ -164,6 +164,18 @@ class HumanVerification
         }
     }
 
+    public function unverifyUser()
+    {
+        $this->user["whitelist"] = false;
+        $this->saveUser();
+    }
+
+    public function setUnusedResultPage($unusedResultPages)
+    {
+        $this->user["unusedResultPages"] = $unusedResultPages;
+        $this->saveUser();
+    }
+
     public function isWhiteListed()
     {
         return $this->user["whitelist"];
@@ -236,4 +248,14 @@ class HumanVerification
     {
         return sizeof($this->users);
     }
+
+    public function getUser()
+    {
+        return $this->user;
+    }
+
+    public function getUserList()
+    {
+        return $this->users;
+    }
 }
diff --git a/metager/resources/views/humanverification/botOverview.blade.php b/metager/resources/views/humanverification/botOverview.blade.php
index 32fe52c2d..0e32c35f4 100644
--- a/metager/resources/views/humanverification/botOverview.blade.php
+++ b/metager/resources/views/humanverification/botOverview.blade.php
@@ -4,27 +4,28 @@
 
 @section('content')
     <style>
-        table form {
-            padding-top: 8px;
-            padding-bottom: 8px;
-        }
-        td:nth-child(1) {
-            padding-right: 8px;
+        .user {
+            width: max-content;
+            padding: 1rem;
+            border: 1px solid white;
+            background-color: #4a4a4a;
+            border-radius: 5px;
         }
     </style>
+    <div class="user">
     <table>
         <tbody>
             <tr>
                 <td>IP-Adresse</td>
-                <td><pre>{{$ip}}</pre></td>
+                <td>{{$ip}}</td>
             </tr>
             <tr>
                 <td>ID</td>
-                <td><pre>{{$user["id"]}}</pre></td>
+                <td>{{$user["id"]}}</td>
             </tr>
             <tr>
                 <td>User-ID</td>
-                <td><pre>{{$user["uid"]}}</pre></td>
+                <td>{{$user["uid"]}}</td>
             </tr>
             <tr>
                 <td>Unused Resultpages</td>
@@ -62,9 +63,64 @@
             </tr>
             <tr>
                 <td>Expiration</td>
-                <td><pre>{{$user["expiration"]}}</pre></td>
+                <td><pre>{{$user["expiration"]->format("d.m.Y H:i:s")}}</pre></td>
+            </tr>
+        </tbody>
+    </table>
+    </div>
+    @foreach($userList as $user_current)
+    @if($user_current["uid"] === $user["uid"])
+        @continue
+    @endif
+    <div class="user">
+    <h3>{{$user_current["uid"]}}</h3>
+    <table>
+        <tbody>
+            <tr>
+                <td>ID</td>
+                <td>{{$user_current["id"]}}</td>
+            </tr>
+            <tr>
+                <td>Unused Resultpages</td>
+                <td>
+                    <form action="" method="post">
+                        <input type="number" name="unusedResultPages" id="unusedResultPages" readonly value="{{$user_current["unusedResultPages"]}}">
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Whitelist</td>
+                <td>
+                    <form action="" method="post">
+                        <select name="whitelist" id="locked" disabled>
+                            <option value="1" @if($user_current["whitelist"]) selected @endif >True</option>
+                            <option value="0" @if(!$user_current["whitelist"]) selected @endif >False</option>
+                        </select>
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Locked</td>
+                <td>
+                    <form action="" method="post">
+                        <select name="locked" id="locked" disabled>
+                            <option value="1" @if($user_current["locked"]) selected @endif>True</option>
+                            <option value="0" @if(!$user_current["locked"]) selected @endif>False</option>
+                        </select>
+                    </form>
+                </td>
+            </tr>
+            <tr>
+                <td>Locked Key</td>
+                <td><pre>{{$user_current["lockedKey"]}}</pre></td>
+            </tr>
+            <tr>
+                <td>Expiration</td>
+                <td><pre>{{$user_current["expiration"]->format("d.m.Y H:i:s")}}</pre></td>
             </tr>
         </tbody>
     </table>
-    {{ dd($userList) }}
+    </div>
+    @endforeach
+   
 @endsection
-- 
GitLab