diff --git a/app/Http/Controllers/Dashboard/UserController.php b/app/Http/Controllers/Dashboard/UserController.php index d395fa4..c5e8f8b 100644 --- a/app/Http/Controllers/Dashboard/UserController.php +++ b/app/Http/Controllers/Dashboard/UserController.php @@ -3,6 +3,8 @@ namespace App\Http\Controllers\Dashboard; use App\Http\Controllers\Controller; +use App\Http\Requests\AccountSettingRequest; +use App\Http\Requests\ChangePasswordRequest; use App\Http\Requests\ResetPasswordRequest; use App\Http\Requests\UserRequest; use App\Models\LoginHistory; @@ -101,6 +103,7 @@ public function resetPassword($id){ return view('dashboard.users.reset-password',[ 'title' => 'Reset Password', + 'page' => 'reset', 'user' => $user ]); } @@ -246,5 +249,53 @@ public function process($id, $type, $process){ return view('dashboard.users.profiles.journalists', $data); } } + public function setting(){ + $user = Auth::user(); + + return view('dashboard.users.setting', [ + 'title' => 'Pengaturan Akun', + 'user' => $user, + ]); + } + + public function settingAction(AccountSettingRequest $request){ + $validatedData = $request->validated(); + + $user = User::findOrFail(Auth::id()); + $updatedUser = $user->update([ + 'name' => $validatedData['name'], + 'email' => $validatedData['email'], + ]); + + if($updatedUser){ + return redirect()->back()->with('success-status', 'Berhasil mengubah data akun.'); + }else{ + return redirect()->back()->with('failed-status', 'Gagal mengubah data akun.'); + } + } + + public function changePassword(){ + $user = User::with(['role'])->findOrFail(Auth::id()); + + return view('dashboard.users.reset-password',[ + 'title' => 'Ubah Password', + 'page' => 'change', + 'user' => $user + ]); + } + + public function changePasswordAction(ChangePasswordRequest $request){ + $validatedData = $request->validated(); + + $updatedUser = User::findOrFail(Auth::id())->update([ + 'password' => $validatedData['password'] + ]); + + if($updatedUser){ + return redirect()->route('dashboard.users.setting')->with('success-status', 'Berhasil mengubah password.'); + }else{ + return redirect()->back()->with('failed-status', 'Gagal mengubah password.'); + } + } } diff --git a/app/Http/Requests/AccountSettingRequest.php b/app/Http/Requests/AccountSettingRequest.php new file mode 100644 index 0000000..8adc347 --- /dev/null +++ b/app/Http/Requests/AccountSettingRequest.php @@ -0,0 +1,42 @@ +|string> + */ + public function rules(): array + { + return [ + 'name' => ['required', 'max:100'], + 'email' => ['required', 'email', 'max:100'], + ]; + } + + public function messages() + { + return [ + 'name.required' => 'Nama wajib diisi.', + 'name.max' => 'Nama tidak boleh lebih dari 100 karakter.', + + 'email.required' => 'Email wajib diisi.', + 'email.email' => 'Email harus menggunakan format email yang valid.', + 'email.max' => 'Email tidak boleh lebih dari 100 karakter.', + ]; + } +} diff --git a/app/Http/Requests/ChangePasswordRequest.php b/app/Http/Requests/ChangePasswordRequest.php new file mode 100644 index 0000000..e30668a --- /dev/null +++ b/app/Http/Requests/ChangePasswordRequest.php @@ -0,0 +1,57 @@ +|string> + */ + public function rules(): array + { + return [ + 'password' => ['required', 'confirmed', Password::min(8) + ->mixedCase() + ->numbers() + ->symbols()], + 'my_password' => ['required', Password::min(8) + ->mixedCase() + ->numbers() + ->symbols(), new MatchCurrentPasswordRule()], + ]; + } + + public function messages() + { + return [ + 'password.required' => 'Password baru wajib diisi.', + 'password.confirmed' => 'Konfirmasi password baru tidak cocok.', + 'password.min' => 'Password baru harus memiliki minimal 8 karakter.', + 'password.mixedCase' => 'Password baru harus mengandung huruf besar dan huruf kecil.', + 'password.numbers' => 'Password baru harus mengandung angka.', + 'password.symbols' => 'Password baru harus mengandung simbol.', + + 'my_password.required' => 'Password Anda wajib diisi.', + 'my_password.confirmed' => 'Konfirmasi password Anda tidak cocok.', + 'my_password.min' => 'Password Anda harus memiliki minimal 8 karakter.', + 'my_password.mixedCase' => 'Password Anda harus mengandung huruf besar dan huruf kecil.', + 'my_password.numbers' => 'Password Anda harus mengandung angka.', + 'my_password.symbols' => 'Password Anda harus mengandung simbol.', + ]; + } +} diff --git a/resources/views/dashboard/users/reset-password.blade.php b/resources/views/dashboard/users/reset-password.blade.php index 880b76f..3951dc0 100644 --- a/resources/views/dashboard/users/reset-password.blade.php +++ b/resources/views/dashboard/users/reset-password.blade.php @@ -11,13 +11,13 @@
Ubah kata sandi akun dan login menggunakan kata sandi baru.