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 @@
-
Reset Kata Sandi
+
{{$page === 'reset' ? 'Reset' : 'Ganti'}} Kata Sandi

Ubah kata sandi akun dan login menggunakan kata sandi baru.

-
+ @csrf
@@ -51,7 +51,7 @@
- +
@@ -61,11 +61,11 @@ @enderror
- +
diff --git a/resources/views/dashboard/users/setting.blade.php b/resources/views/dashboard/users/setting.blade.php new file mode 100644 index 0000000..020af9b --- /dev/null +++ b/resources/views/dashboard/users/setting.blade.php @@ -0,0 +1,86 @@ +@include('partials.dashboard.head') +@include('partials.dashboard.sidebar', ['page' => 'users']) +@include('partials.dashboard.header') + +
+
+
+
+ {{--
+
+
+

Settings

+
+
+
--}} +
+
+
+
Pengaturan Akun
+

Kelola pengaturan dasar akun Anda disini.

+
+ @csrf +
+
+
+ + Nama lengkap Anda +
+
+
+
+
+ +
+
+
+
+
+
+
+ + Email yang Anda gunakan untuk login +
+
+
+
+
+ +
+
+
+
+
+
+
+ + Selalu ubah kata sandi Anda secara berkala +
+
+
+ +
+
+
+
+
+
+ Kembali + +
+
+
+
+
+
+
+
+
+
+
+ +@include('partials.dashboard.footer', ['rich_editor' => false]) diff --git a/resources/views/partials/dashboard/header.blade.php b/resources/views/partials/dashboard/header.blade.php index 3ee5adf..8cf1a03 100644 --- a/resources/views/partials/dashboard/header.blade.php +++ b/resources/views/partials/dashboard/header.blade.php @@ -136,7 +136,7 @@ diff --git a/routes/web.php b/routes/web.php index 26e37d6..f9a73b3 100644 --- a/routes/web.php +++ b/routes/web.php @@ -478,6 +478,11 @@ }); Route::get('/profile/{type}', 'profile')->name('profile'); + + Route::get('/settings', 'setting')->name('setting'); + Route::post('/settings', 'settingAction')->name('setting.action'); + Route::get('/settings/change-password', 'changePassword')->name('setting.change.password'); + Route::post('/settings/change-password', 'changePasswordAction')->name('setting.change.password.action'); }); Route::get('/data', [DatatableController::class, 'user'])->name('data');