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