diff --git a/app/Http/Controllers/Auth/ProfileController.php b/app/Http/Controllers/Auth/ProfileController.php index 7eca186..51df1ab 100644 --- a/app/Http/Controllers/Auth/ProfileController.php +++ b/app/Http/Controllers/Auth/ProfileController.php @@ -3,8 +3,11 @@ namespace App\Http\Controllers\Auth; use App\Http\Controllers\Controller; +use App\Models\User; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Hash; +use Illuminate\Support\Facades\Validator; class ProfileController extends Controller { @@ -13,4 +16,87 @@ public function index() $user = Auth::user(); return view('auth.profile', compact('user')); } + + public function updateData(request $request) + { + $customMessage = [ + 'username.required' => 'Username wajib diisi', + 'username.max' => 'Username maksimal 12 karakter', + 'username.string' => 'Username harus berupa string', + 'username.unique' => 'Username sudah terdaftar', + + 'name.required' => 'Nama wajib diisi', + 'name.max' => 'Nama maksimal 255 karakter', + 'name.string' => 'Nama harus berupa string', + 'name.unique' => 'Nama sudah terdaftar', + + 'email.required' => 'Email wajib diisi', + 'email.email' => 'Email tidak valid', + 'email.unique' => 'Email sudah terdaftar', + 'email.max' => 'Email maksimal 255 karakter', + 'email.string' => 'Email harus berupa string', + ]; + + $validator = Validator::make($request->all(), [ + 'username' => 'required|string|max:12|unique:users,username,' . Auth::user()->id, + 'name' => 'required|string|max:255|unique:users,name,' . Auth::user()->id, + 'email' => 'required|string|email|max:255|unique:users,email,' . Auth::user()->id, + ], $customMessage); + + if ($validator->fails()) { + toast($validator->messages()->all()[0], 'error')->position('top-right')->autoclose(3000); + return redirect()->back()->withInput(); + } + + $user = User::find(Auth::user()->id); + $user->username = $request->username; + $user->name = $request->name; + $user->email = $request->email; + + try { + $user->save(); + toast('Data berhasil diubah', 'success')->position('top-right')->autoclose(3000); + return redirect()->back(); + } catch (\Throwable $th) { + toast('Terjadi kesalahan', 'error')->position('top-right')->autoclose(3000); + return redirect()->back(); + } + } + + public function updatePassword(request $request) + { + // dd($request->all()); + $customMessage = [ + 'new_password.required' => 'Password wajib diisi', + 'new_password.confirmed' => 'Konfirmasi password tidak cocok', + 'new_password.min' => 'Password minimal 8 karakter', + ]; + + $user = User::find(Auth::user()->id); + if (Hash::check($request->old_password, $user->password)) { + + $validator = Validator::make($request->all(), [ + 'new_password' => 'required|string|min:8|confirmed', + ], $customMessage); + + if ($validator->fails()) { + toast($validator->messages()->all()[0], 'error')->position('top-right')->autoclose(3000); + return redirect()->back()->withInput(); + } + + $user->password = Hash::make($request->new_password); + + try { + $user->save(); + toast('Password berhasil diubah', 'success')->position('top-right')->autoclose(3000); + return redirect()->back(); + } catch (\Throwable $th) { + toast('Terjadi kesalahan', 'error')->position('top-right')->autoclose(3000); + return redirect()->back(); + } + } else { + toast('Password lama tidak cocok', 'error')->position('top-right')->autoclose(3000); + return redirect()->back(); + } + } } diff --git a/app/Http/Controllers/ProfileController.php b/app/Http/Controllers/ProfileController.php deleted file mode 100644 index a48eb8d..0000000 --- a/app/Http/Controllers/ProfileController.php +++ /dev/null @@ -1,60 +0,0 @@ - $request->user(), - ]); - } - - /** - * Update the user's profile information. - */ - public function update(ProfileUpdateRequest $request): RedirectResponse - { - $request->user()->fill($request->validated()); - - if ($request->user()->isDirty('email')) { - $request->user()->email_verified_at = null; - } - - $request->user()->save(); - - return Redirect::route('profile.edit')->with('status', 'profile-updated'); - } - - /** - * Delete the user's account. - */ - public function destroy(Request $request): RedirectResponse - { - $request->validateWithBag('userDeletion', [ - 'password' => ['required', 'current_password'], - ]); - - $user = $request->user(); - - Auth::logout(); - - $user->delete(); - - $request->session()->invalidate(); - $request->session()->regenerateToken(); - - return Redirect::to('/'); - } -} diff --git a/public/assets/js/app.js b/public/assets/js/app.js index 4a5a7a2..51d824b 100644 --- a/public/assets/js/app.js +++ b/public/assets/js/app.js @@ -1 +1,1518 @@ -!function(){var a,t,o,n,s,e,d,l,i=document.querySelector(".navbar-menu").innerHTML,r=7,c="en",m=localStorage.getItem("language");function u(e){document.getElementById("header-lang-img")&&("en"==e?document.getElementById("header-lang-img").src="assets/images/flags/us.svg":"sp"==e?document.getElementById("header-lang-img").src="assets/images/flags/spain.svg":"gr"==e?document.getElementById("header-lang-img").src="assets/images/flags/germany.svg":"it"==e?document.getElementById("header-lang-img").src="assets/images/flags/italy.svg":"ru"==e?document.getElementById("header-lang-img").src="assets/images/flags/russia.svg":"ch"==e?document.getElementById("header-lang-img").src="assets/images/flags/china.svg":"fr"==e&&(document.getElementById("header-lang-img").src="assets/images/flags/french.svg"),localStorage.setItem("language",e),m=localStorage.getItem("language"),function(){null==m&&u(c);var e=new XMLHttpRequest;e.open("GET","assets/lang/"+m+".json"),e.onreadystatechange=function(){var a;4===this.readyState&&200===this.status&&(a=JSON.parse(this.responseText),Object.keys(a).forEach(function(t){document.querySelectorAll("[data-key='"+t+"']").forEach(function(e){e.textContent=a[t]})}))},e.send()}())}function g(){document.querySelectorAll(".navbar-nav .collapse")&&document.querySelectorAll(".navbar-nav .collapse").forEach(function(t){var a=new bootstrap.Collapse(t,{toggle:!1});t.addEventListener("show.bs.collapse",function(e){e.stopPropagation();e=t.parentElement.closest(".collapse");e?e.querySelectorAll(".collapse").forEach(function(e){e=bootstrap.Collapse.getInstance(e);e!==a&&e.hide()}):function(e){for(var t=[],a=e.parentNode.firstChild;a;)1===a.nodeType&&a!==e&&t.push(a),a=a.nextSibling;return t}(t.parentElement).forEach(function(e){2