From f4f1674b551f2547604d91675607d1a7150ea5e3 Mon Sep 17 00:00:00 2001
From: Dominik Hebeler <dominik@suma-ev.de>
Date: Wed, 21 Aug 2024 14:10:16 +0200
Subject: [PATCH] login working as expected

---
 .../Http/Controllers/LogsApiController.php    |  8 ++-
 metager/app/Providers/AppServiceProvider.php  |  2 +-
 .../resources/less/metager/pages/logs.less    | 21 ++++++
 metager/resources/views/logs/login.blade.php  | 66 ++++++++++---------
 metager/webpack.mix.js                        |  4 ++
 5 files changed, 68 insertions(+), 33 deletions(-)
 create mode 100644 metager/resources/less/metager/pages/logs.less

diff --git a/metager/app/Http/Controllers/LogsApiController.php b/metager/app/Http/Controllers/LogsApiController.php
index d01a70d34..fe4bfc9f2 100644
--- a/metager/app/Http/Controllers/LogsApiController.php
+++ b/metager/app/Http/Controllers/LogsApiController.php
@@ -72,10 +72,14 @@ class LogsApiController extends Controller
 
     public function login(Request $request)
     {
-        if (!is_null(Auth::guard("logs")->user()->getAuthIdentifier())) {
+        if (!is_null(Auth::guard("logs")->user()) && !is_null(Auth::guard("logs")->user()->getAuthIdentifier())) {
             session()->flash("email", Auth::guard("logs")->user()->getAuthIdentifier());
         }
-        return view("logs.login", ['title' => __('titles.logs.login')]);
+        if ($request->filled("reset")) {
+            session()->flush();
+            return redirect(route("logs:login"));
+        }
+        return view("logs.login", ['title' => __('titles.logs.login')])->with(["css" => [mix("/css/logs.css")]]);
     }
     public function login_post(Request $request)
     {
diff --git a/metager/app/Providers/AppServiceProvider.php b/metager/app/Providers/AppServiceProvider.php
index b23e8729b..c641f7729 100644
--- a/metager/app/Providers/AppServiceProvider.php
+++ b/metager/app/Providers/AppServiceProvider.php
@@ -42,7 +42,7 @@ class AppServiceProvider extends ServiceProvider
         });
 
         Auth::extend('logs', function (Application $app, string $name, array $config) {
-            return new LogsAuthGuard(Auth::createUserProvider($config['provider']), $app->make('request'));
+            return new LogsAuthGuard(Auth::createUserProvider($config['provider']), $app->make(\Illuminate\Http\Request::class));
         });
     }
 
diff --git a/metager/resources/less/metager/pages/logs.less b/metager/resources/less/metager/pages/logs.less
new file mode 100644
index 000000000..66df7c5f9
--- /dev/null
+++ b/metager/resources/less/metager/pages/logs.less
@@ -0,0 +1,21 @@
+#login {
+    >form {
+        display: grid;
+        row-gap: 0.5rem;
+
+        .input-group {
+            display: grid;
+
+            >label {
+                font-weight: normal;
+                font-size: .8rem;
+                margin: 0;
+            }
+        }
+
+        >a.reset {
+            text-align: center;
+            font-size: .8rem;
+        }
+    }
+}
\ No newline at end of file
diff --git a/metager/resources/views/logs/login.blade.php b/metager/resources/views/logs/login.blade.php
index 21df09d45..7aa08dea2 100644
--- a/metager/resources/views/logs/login.blade.php
+++ b/metager/resources/views/logs/login.blade.php
@@ -3,39 +3,45 @@
 @section('title', $title)
 
 @section('content')
-<h1>MetaGer Logs API</h1>
-<p>Bitte melde dich an, um Zugriff auf dein Konto zu erhalten.</p>
-@if ($errors->any())
-    <div class="alert alert-danger">
-        <ul>
-            @foreach ($errors->all() as $error_message)
-                <li>{{ $error_message }}</li>
-            @endforeach
-        </ul>
-    </div>
-@endif
-<form action="{{ route("logs:login:post")}}" method="post">
-    <input type="hidden" name="_token" value="{{ csrf_token() }}" />
-    @if(session("email"))
-        <input type="hidden" name="email" value="{{session('email')}}">
+<div id="login">
+    <h1>MetaGer Logs API</h1>
+    @if ($errors->any())
+        <div class="alert alert-danger">
+            <ul>
+                @foreach ($errors->all() as $error_message)
+                    <li>{{ $error_message }}</li>
+                @endforeach
+            </ul>
+        </div>
     @endif
-    <div class="input-group">
-        <label for="email">Email Addresse</label>
+    <p>Bitte melde dich an, um Zugriff auf dein Konto zu erhalten.</p>
+    <form action="{{ route("logs:login:post")}}" method="post">
+        <input type="hidden" name="_token" value="{{ csrf_token() }}" />
         @if(session("email"))
-            <input type="email" name="email" id="email" value="{{session('email')}}" placeholder="max@mustermann.de"
-                required disabled>
-        @else
-            <input type="email" name="email" id="email" value="{{old('email')}}" placeholder="max@mustermann.de" required>
+            <input type="hidden" name="email" value="{{session('email')}}">
         @endif
-    </div>
-    @if(session("email"))
-        <p>Falls dieser Account bereits registriert ist, haben wir dir soeben einen Login Code per Email gesendet. Bitte
-            trage diesen ein um dich anzumelden.</p>
         <div class="input-group">
-            <label for="code">Login Code</label>
-            <input type="text" name="code" id="code" placeholder="123456" required>
+            <label for="email">Email Addresse</label>
+            @if(session("email"))
+                <input type="email" name="email" id="email" value="{{session('email')}}" placeholder="max@mustermann.de"
+                    required disabled>
+            @else
+                <input type="email" name="email" id="email" value="{{old('email')}}" placeholder="max@mustermann.de"
+                    required>
+            @endif
         </div>
-    @endif
-    <button class="btn btn-default" type="submit">Abschicken</button>
-</form>
+        @if(session("email"))
+            <div class="input-group">
+                <label for="code">Login Code</label>
+                <input type="text" name="code" id="code" placeholder="123456" required>
+            </div>
+            <p>Falls dieser Account bereits registriert ist, haben wir dir einen Login Code per Email gesendet. Bitte
+                trage diesen ein um dich anzumelden.</p>
+        @endif
+        <button class="btn btn-default" type="submit">Abschicken</button>
+        @if(session("email"))
+            <a class="reset" href="{{ route('logs:login', ['reset' => '1']) }}">Neu Anmelden</a>
+        @endif
+    </form>
+</div>
 @endsection
\ No newline at end of file
diff --git a/metager/webpack.mix.js b/metager/webpack.mix.js
index 46fd527b5..e33aeeba7 100644
--- a/metager/webpack.mix.js
+++ b/metager/webpack.mix.js
@@ -72,6 +72,10 @@ mix
     "resources/less/metager/pages/admin/logs.less",
     "public/css/admin/logs.css"
   )
+  .less(
+    "resources/less/metager/pages/logs.less",
+    "public/css/logs.css"
+  )
   .less(
     "resources/less/metager/pages/help-easy-language.less",
     "public/css/help-easy-language.css"
-- 
GitLab