From b4263d889127cfca8d947b4be59b9efbfcbf96db Mon Sep 17 00:00:00 2001
From: Anders <anders164a@gmail.com>
Date: Mon, 3 Aug 2020 10:36:57 +0200
Subject: [PATCH] Fixed - Password & Confirm Password in create user now need
 to be the same. Added new "see password" function on all password sites.
 Fixed bugs

---
 .../app/Http/Controllers/UserController.php   | 36 +++++--------------
 .../views/admin/users/create.blade.php        | 30 ++++++++++++++--
 .../views/admin/users/edit.blade.php          | 29 ++++++---------
 .../views/app/users/editpass.blade.php        |  4 +--
 .../resources/views/app/users/login.blade.php | 22 +++++++++++-
 5 files changed, 69 insertions(+), 52 deletions(-)

diff --git a/skolehjem/app/Http/Controllers/UserController.php b/skolehjem/app/Http/Controllers/UserController.php
index 7dd52d5..33ebb3f 100644
--- a/skolehjem/app/Http/Controllers/UserController.php
+++ b/skolehjem/app/Http/Controllers/UserController.php
@@ -71,15 +71,19 @@ class UserController extends Controller
             "phone" => "required|unique:users",
         ]);
 
-        $rolez = $request->input("roles", [ "User" ]);
+        if ($request->password != $request->password2) {
+            return redirect()->route('users.create')->with('error#notsamepass', '<p>Der stod ikke det samme i `Password` & `Confirm Password`!</p>');
+        }
+
+        $roles = $request->input("roles", [ "User" ]);
 
         $user = new User($data);
 
-        $user->assignRole($rolez);
+        $user->assignRole($roles);
         $user->save();
 
 
-        return Response::detect("users.store");
+        return redirect()->route('users.index');
     }
 
     /**
@@ -123,7 +127,6 @@ class UserController extends Controller
      */
     public function update(Request $request, $id)
     {
-        return redirect()->route("users.account");
         $user = User::find($id);
 
         if($id === Auth::id() || auth()->user()->hasPermissionTo("user.edit")) {
@@ -134,7 +137,7 @@ class UserController extends Controller
                         /** @var User $user */
                         $user->update($data);
                     } else // Else go back with an error message
-                        return redirect()->route("users.edit", ['user' => $id])->with('error#passnotsame', '<p>Der stod ikke det samme i `Password` & `Confirm Password`!</p>');
+                        return redirect()->route("users.edit", ['user' => $id])->with('error#notsamepass', '<p>Der stod ikke det samme i `Password` & `Confirm Password`!</p>');
                 }
                 else { // If you haven't touched the password, then update everything else but password
                     $data = $request->only(['name_first', 'name_last', 'email', 'phone', 'roles']);
@@ -148,27 +151,6 @@ class UserController extends Controller
                 foreach ($request->roles as $role) {
                     $user->assignRole($role);
                 }
-            } else { // Else if you're not on the admin site (user site)
-                if ($request->input('password') != null) { // If you're editing the password
-                    $data = $request->only(['name_first', 'name_last', 'email', 'phone', 'password']);
-                    if ($request->input('password') != $request->input('confirmpassword')) { // If new password and new password confirm is not the same, go back with fail message.
-                        return redirect()->route("users.accounteditpass")->with('error#notsamepass', '<p class="text-center">Der stod ikke det samme i `Nyt Password` & `Bekræft Nyt Password`!</p>');
-                    } elseif (!Hash::check($request->input('oldpassword'), $user->password)) { // If the written current password and current password in DB is not the same, go back with fail message.
-                        return redirect()->route("users.accounteditpass")->with('error#oldpass', '<p class="text-center">Det indtastede password i `Nuværende Password` er ikke dit nuværende password!</p>');
-                    } else { // If new password and current password is the same AND current written and current DB password is the same. Then update and logout.
-                        /** @var User $user */
-                        $user->update($data);
-                        Auth::logout();
-
-                        return redirect()->route("users.login")->with('success#passwordchange', '<p class="text-center text-white">Dit password er hermed ændret!</p>');
-                    }
-                } else { // Else if you're not editing the password but anything else (Email, Phone Number). Then update user.
-                    $data = $request->only(['email', 'phone']);
-                    $user->update($data);
-
-                    return redirect()->route("users.account")->with('success#credentialschanged', '<p class="text-center">Dine oplysninger er hermed ændret!</p>');
-                }
-
             }
         }
         $users = User::query()->paginate(20);
@@ -274,7 +256,7 @@ class UserController extends Controller
         if ($request->input('password') != null) { // If you're editing the password
             $data = $request->only(['name_first', 'name_last', 'email', 'phone', 'password']);
             if ($request->input('password') != $request->input('confirmpassword')) { // If new password and new password confirm is not the same, go back with fail message.
-                return redirect()->route("users.accounteditpass")->with('error#notsamepass', '<p class="text-center">Der stod ikke det samme i `Nyt Password` & `Bekræft Nyt Password`!</p>');
+                return redirect()->route("users.accounteditpass")->with('error#notsamepass', '<p class="text-center">Der stod ikke det samme i `Nyt Password` & `Confirm Password`!</p>');
             } elseif (!Hash::check($request->input('oldpassword'), $user->password)) { // If the written current password and current password in DB is not the same, go back with fail message.
                 return redirect()->route("users.accounteditpass")->with('error#oldpass', '<p class="text-center">Det indtastede password i `Nuværende Password` er ikke dit nuværende password!</p>');
             } else { // If new password and current password is the same AND current written and current DB password is the same. Then update and logout.
diff --git a/skolehjem/resources/views/admin/users/create.blade.php b/skolehjem/resources/views/admin/users/create.blade.php
index 0216fe0..e329ea1 100644
--- a/skolehjem/resources/views/admin/users/create.blade.php
+++ b/skolehjem/resources/views/admin/users/create.blade.php
@@ -11,6 +11,7 @@
 
 @section("content")
     <h1>Opret Bruger:</h1>
+    {!! session()->get('error#notsamepass') !!}
     <form method="post" action="{{ route("users.store") }}">
         @csrf
         <label for="name_first">Fornavn:</label>
@@ -20,9 +21,15 @@
         <label for="email">Email:</label>
             <input type="email" name="email" id="email" placeholder="x@y.z" required>
         <label for="password1">Password:</label>
-            <input type="password" name="password" placeholder="Password" id="password1" required>
-        <label for="password2">Bekræft Password:</label>
-            <input type="password" id="password2" placeholder="Bekræft Password" required>
+        <div class="input-group text-left">
+            <input type="password" class="form-control" name="password" id="password1" placeholder="******" required>
+            <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-new" onclick="show('password1', 'fa-new')"></span>
+        </div>
+        <label for="password2">Confirm Password:</label>
+        <div class="input-group text-left">
+            <input type="password" class="form-control" name="password2" id="password2" placeholder="******" required>
+            <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-confirm" onclick="show('password2', 'fa-confirm')"></span>
+        </div>
         <label for="tel">Telefon nr:</label>
             <input type="tel" name="phone" id="tel" placeholder="12345678" pattern="[0-9]{2}[0-9]{2}[0-9]{2}[0-9]{2}" required>
         <label for="roles">Rolle:</label>
@@ -36,3 +43,20 @@
         <input type="submit" class="btn btn-dark text-white" value="Opret">
     </form>
 @endsection
+
+@section("scripts")
+    <script>
+        function show($passID, $faID) {
+            var inputPass = document.getElementById($passID);
+            var faEye = document.getElementById($faID);
+
+            if (inputPass.type === "password") {
+                inputPass.type = "text";
+                faEye.style.color = "#000";
+            } else {
+                inputPass.type = "password";
+                faEye.style.color = "#808080";
+            }
+        }
+    </script>
+@endsection
diff --git a/skolehjem/resources/views/admin/users/edit.blade.php b/skolehjem/resources/views/admin/users/edit.blade.php
index b3feb3a..4559136 100644
--- a/skolehjem/resources/views/admin/users/edit.blade.php
+++ b/skolehjem/resources/views/admin/users/edit.blade.php
@@ -11,8 +11,8 @@
 
 @section("content")
     <h1>Rediger Bruger:</h1>
-    {!! session()->get('error#passnotsame') !!}
-    <form method="post" action="{{ route("users.update", ['user' => $user]) }}" style="display: inline-table;">
+    {!! session()->get('error#notsamepass') !!}
+    <form method="post" action="{{ route("users.update", ['user' => $user]) }}">
         @csrf
         @method("put")
         <label for="name_first">Fornavn:</label>
@@ -22,11 +22,15 @@
         <label for="email">Email:</label>
             <input type="email" name="email" id="email" value="{{ $user->email }}" required>
         <label for="password1">Password: (Forblives blank, hvis password ikke skal ændres)</label>
-            <input type="password" name="password" id="password1" value="" placeholder="******">
-            <span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password" id="fa-new" onclick="show('password1', 'fa-new')"></span>
+        <div class="input-group text-left">
+            <input type="password" class="form-control" name="password" id="password1" value="" placeholder="******">
+            <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-new" onclick="show('password1', 'fa-new')"></span>
+        </div>
         <label for="password2">Confirm Password: (Forblives blank, hvis password ikke skal ændres)</label>
-            <input type="password" name="password2" id="password2" value="" placeholder="******">
-        <span toggle="#password-field" class="fa fa-fw fa-eye field-icon toggle-password" id="fa-confirm" onclick="show('password2', 'fa-confirm')"></span>
+        <div class="input-group text-left">
+            <input type="password" class="form-control" name="password2" id="password2" value="" placeholder="******">
+            <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-confirm" onclick="show('password2', 'fa-confirm')"></span>
+        </div>
         <label for="tel">Telefon nr:</label>
             <input type="tel" name="phone" id="tel" value="{{ $user->phone }}" required>
         <label for="role">Rolle: (Brug ctrl og shift til at vælge flere)</label>
@@ -54,19 +58,6 @@
             </select>
         <input type="submit" class="btn btn-dark text-white" value="Rediger">
     </form>
-    <style>
-        input {
-            width: calc(100% - 8px);
-        }
-
-        .fa-eye {
-            position: absolute;
-            font-size: 25px;
-            color: grey;
-            margin: 7.5px 0 0 -45px;
-        }
-
-    </style>
 @endsection
 
 @section("scripts")
diff --git a/skolehjem/resources/views/app/users/editpass.blade.php b/skolehjem/resources/views/app/users/editpass.blade.php
index bb0f78a..9497b5d 100644
--- a/skolehjem/resources/views/app/users/editpass.blade.php
+++ b/skolehjem/resources/views/app/users/editpass.blade.php
@@ -7,7 +7,7 @@
 @section("content")
     <main>
         <h1 class="text-center sde-blue mt-0">Konto</h1>
-        <form method="post" action="{{ route("users.accountupdate", ['user' => Auth::user()]) }}" style="display: inline-table;">
+        <form method="post" action="{{ route("users.accountupdate", ['user' => Auth::user()]) }}">
             @csrf
             @method("put")
             <span>Nuværende Password:</span>
@@ -20,7 +20,7 @@
                 <input type="password" class="form-control" name="password" id="new" placeholder="******" required>
                 <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-new" onclick="show('new', 'fa-new')"></span>
             </div>
-            <span>Bekræft Nyt Password:</span>
+            <span>Confirm Password:</span>
             <div class="input-group text-left">
                 <input type="password" class="form-control" name="confirmpassword" id="confirm" placeholder="******" required>
                 <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-confirm" onclick="show('confirm', 'fa-confirm')"></span>
diff --git a/skolehjem/resources/views/app/users/login.blade.php b/skolehjem/resources/views/app/users/login.blade.php
index e13dc07..8fddb85 100644
--- a/skolehjem/resources/views/app/users/login.blade.php
+++ b/skolehjem/resources/views/app/users/login.blade.php
@@ -12,7 +12,10 @@
         <form action="{{ route("users.login") }}" method="post">
             @csrf
             <input class="appinput" type="email" name="email" placeholder="Email" required>
-            <input class="appinput" type="password" name="password" placeholder="Password" required>
+            <div class="input-group text-left">
+                <input type="password" class="appinput form-control" name="password" id="password" placeholder="Password" required>
+                <span class="fa fa-fw fa-eye field-icon toggle-password" id="fa-password" onclick="show('password', 'fa-password')" style="background-color: #00788a; color: white;"></span>
+            </div>
             <label class="toggle">
                 <input class="toggle__input" type="checkbox" name="rememberpassword">
                 <span class="toggle__label">
@@ -25,3 +28,20 @@
         <a class="text-white text-center" href="{{ route('users.show-forgot') }}">Forgot password?</a>
     </main>
 @endsection
+
+@section("scripts")
+    <script>
+        function show($passID, $faID) {
+            var inputPass = document.getElementById($passID);
+            var faEye = document.getElementById($faID);
+
+            if (inputPass.type === "password") {
+                inputPass.type = "text";
+                faEye.style.color = "#999";
+            } else {
+                inputPass.type = "password";
+                faEye.style.color = "#fff";
+            }
+        }
+    </script>
+@endsection