Change password and update version 1.0.4

This commit is contained in:
Supan Adit Pratama 2020-06-30 16:52:50 +07:00
parent f805939989
commit f0645ce412
4 changed files with 119 additions and 2 deletions

View File

@ -133,6 +133,38 @@ class SecurityController extends Controller
} }
} }
public function formChangePassword(Request $request)
{
$request->validate([
"email" => "required",
"password" => "required",
"password_confirm" => "required",
]);
$user = \App\User::where("email", $request->input("email"))->first();
if ($user != null) {
if ($request->input('password') == $request->input('password_confirm')) {
$user->password = Hash::make($request->input('password'));
if ($user->save()) {
return response()->json([
"message" => "Success change password",
], 200);
} else {
return response()->json([
"message" => "Failed change password",
], 400);
}
} else {
return response()->json([
"message" => "New password is not match with confirm password",
], 400);
}
} else {
return response()->json([
"message" => "Email " . $request->input('email') . " is not exist",
], 400);
}
}
public function formLogout(Request $request) public function formLogout(Request $request)
{ {
$request->session()->flush(); $request->session()->flush();

View File

@ -53,6 +53,11 @@
<div class="collapse navbar-collapse pull-left" id="navbar-collapse"> <div class="collapse navbar-collapse pull-left" id="navbar-collapse">
<ul class="nav navbar-nav"> <ul class="nav navbar-nav">
<li><a href="/home">Home</a></li> <li><a href="/home">Home</a></li>
<li>
<a href="#" data-toggle="modal" data-target="#change-password-modal">
Change Password
</a>
</li>
<li> <li>
<a href="#" class="logout-button visible-xs"> <a href="#" class="logout-button visible-xs">
Sign Out Sign Out
@ -103,10 +108,45 @@
<!-- /.container --> <!-- /.container -->
</div> </div>
<!-- /.content-wrapper --> <!-- /.content-wrapper -->
{{-- Change Password Modal --}}
<div class="modal fade" id="change-password-modal">
<div class="modal-dialog">
<div class="modal-content">
<form action="/" method="post" id="change-password-modal-form">
<div class="modal-header">
<h4 class="modal-title">Change Password</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>New Password</label>
<input type="password" class="form-control" placeholder="Insert your new password"
id="change-password-modal-form-field-password">
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" class="form-control" placeholder="Please confirm new password"
id="change-password-modal-form-field-password-confirm">
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default pull-left" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn btn-primary">
<i class="fa fa-spinner fa-spin" id="change-password-modal-save-loading-indicator"></i>
<span id="change-password-modal-save-button-label">Save</span>
</button>
</div>
</form>
</div>
<!-- /.modal-content -->
</div>
<!-- /.modal-dialog -->
</div>
<footer class="main-footer"> <footer class="main-footer">
<div class="container"> <div class="container">
<div class="pull-right hidden-xs"> <div class="pull-right hidden-xs">
<b>Version</b> 1.0.3 <b>Version</b> 1.0.4
</div> </div>
<strong>Copyright &copy; @php echo date('Y'); @endphp <b>Todo</b>&nbsp;<i>App</i>.</strong> <strong>Copyright &copy; @php echo date('Y'); @endphp <b>Todo</b>&nbsp;<i>App</i>.</strong>
All rights All rights
@ -136,6 +176,7 @@
<script type="application/javascript"> <script type="application/javascript">
$(document).ready(function () { $(document).ready(function () {
$("#change-password-modal-save-loading-indicator").hide();
$(".logout-button").on('click', function () { $(".logout-button").on('click', function () {
swal({ swal({
title: "Do you want to sign out ?", title: "Do you want to sign out ?",
@ -147,6 +188,49 @@
} }
}); });
}); });
$("#change-password-modal-form").on("submit", function (e) {
e.preventDefault();
const password = $("#change-password-modal-form-field-password");
const passwordConfirm = $("#change-password-modal-form-field-password-confirm");
$.ajax({
type: "POST",
url: "/web/change/password",
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content'),
},
data: JSON.stringify({
"email": "{{ Session::get('email') }}",
"password": password.val(),
"password_confirm": passwordConfirm.val(),
}),
contentType: "application/json",
dataType: "json",
async: true,
beforeSend: function () {
$("#change-password-modal-save-loading-indicator").show();
$("#change-password-modal-save-button-label").hide();
},
success: function (result) {
$("#change-password-modal-save-loading-indicator").hide();
$("#change-password-modal-save-button-label").show();
password.val(null);
passwordConfirm.val(null);
toastr.success(result.message);
$("#change-password-modal").modal('hide');
},
error: function (result) {
$("#change-password-modal-save-loading-indicator").hide();
$("#change-password-modal-save-button-label").show();
toastr.error(result.responseJSON.message);
}
});
});
}); });
</script> </script>

View File

@ -63,7 +63,7 @@
</div> </div>
</form> </form>
<br/> <br/>
Version 1.0.3 Version 1.0.4
</div> </div>
<!-- /.login-box-body --> <!-- /.login-box-body -->
</div> </div>

View File

@ -20,6 +20,7 @@ Route::get('/register', "SecurityController@viewRegister");
Route::middleware('auth.web')->group(function () { Route::middleware('auth.web')->group(function () {
Route::get('/home', "TodoController@viewHome"); Route::get('/home', "TodoController@viewHome");
Route::post('/web/change/password', "SecurityController@formChangePassword");
// This group is used for internal API provided by session // This group is used for internal API provided by session
Route::prefix('/web')->group(function () { Route::prefix('/web')->group(function () {