diff --git a/app/Livewire/Studio/Setting/Account.php b/app/Livewire/Studio/Setting/Account.php index bbd24d9..ad4e02c 100644 --- a/app/Livewire/Studio/Setting/Account.php +++ b/app/Livewire/Studio/Setting/Account.php @@ -3,35 +3,82 @@ namespace App\Livewire\Studio\Setting; use App\Livewire\Forms\Studio\Setting\AccountForm; +use App\Livewire\Forms\Studio\Setting\PasswordForm; +use App\Livewire\Forms\Studio\Setting\ProfileForm; use App\Models\User; use App\Traits\Notification\WithSubscribeNotification; use App\Traits\WithAuthorization; use App\Traits\WithToast; use App\Traits\WithUpdatedData; +use Illuminate\Support\Facades\Hash; use Livewire\Attributes\Title; use Livewire\Component; -#[Title('Akun')] +#[Title('Pengaturan')] class Account extends Component { use WithAuthorization, WithSubscribeNotification, WithToast, WithUpdatedData; - public AccountForm $form; + public AccountForm $accountForm; - public function mount(User $user) + public ProfileForm $profileForm; + + public PasswordForm $passwordForm; + + public function mount() { - $this->form->setAccount($user); + $user = auth()->user(); + + $user->load('employee'); + + $this->accountForm->setAccount($user); + + $this->profileForm->setProfile($user->employee); + + $this->passwordForm->setUser($user); } - public function update() + public function updateAccount() { $this->canOrAbort('update account'); - $this->form->update(); + $this->accountForm->update(); $this->toast('Akun berhasil diperbarui.'); } + public function updateProfile() + { + $this->canOrAbort('update profile'); + + $this->profileForm->update(); + + $this->toast('Profil berhasil diperbarui.'); + } + + public function updatePassword() + { + $this->canOrAbort('update password'); + + if (! Hash::check($this->passwordForm->current_password, $this->passwordForm->user->password)) { + $this->toast('Kata sandi yang Anda masukkan tidak sesuai dengan kata sandi saat ini.', 'Gagal', 'danger'); + + return; + } + + $this->passwordForm->update(); + + auth()->logoutOtherDevices($this->passwordForm->current_password); + + auth()->logout(); + session()->invalidate(); + session()->regenerateToken(); + + $this->toast('Kata sandi berhasil diperbarui, Silakan masuk kembali.'); + + $this->redirectRoute('login', navigate: true); + } + public function render() { return view('livewire.studio.setting.account', [ diff --git a/app/Livewire/Studio/Setting/Password.php b/app/Livewire/Studio/Setting/Password.php deleted file mode 100644 index 4b21c17..0000000 --- a/app/Livewire/Studio/Setting/Password.php +++ /dev/null @@ -1,56 +0,0 @@ -form->setUser($user); - } - - public function update() - { - $this->canOrAbort('update password'); - - if (! Hash::check($this->form->current_password, $this->form->user->password)) { - $this->toast('Kata sandi yang Anda masukkan tidak sesuai dengan kata sandi saat ini.', 'Gagal', 'danger'); - - return; - } - - auth()->logoutOtherDevices($this->form->current_password); - - $this->form->update(); - - auth()->logout(); - session()->invalidate(); - session()->regenerateToken(); - - $this->toast('Kata sandi berhasil diperbarui.'); - - $this->redirectRoute('login', navigate: true); - } - - public function render() - { - return view('livewire.studio.setting.password', [ - 'pageTitle' => 'Kata Sandi', - ]); - } -} diff --git a/app/Livewire/Studio/Setting/Profile.php b/app/Livewire/Studio/Setting/Profile.php deleted file mode 100644 index 0bf9413..0000000 --- a/app/Livewire/Studio/Setting/Profile.php +++ /dev/null @@ -1,41 +0,0 @@ -form->setProfile($employee); - } - - public function update() - { - $this->canOrAbort('update profile'); - - $this->form->update(); - - $this->toast('Profil berhasil diperbarui.'); - } - - public function render() - { - return view('livewire.studio.setting.profile', [ - 'pageTitle' => 'Profil', - ]); - } -} diff --git a/resources/views/components/partials/studio/_header.blade.php b/resources/views/components/partials/studio/_header.blade.php index 5978264..ee37853 100644 --- a/resources/views/components/partials/studio/_header.blade.php +++ b/resources/views/components/partials/studio/_header.blade.php @@ -23,8 +23,7 @@ class="max-lg:hidden! hidden dark:flex" /> - + Pengaturan diff --git a/resources/views/components/setting-tabs.blade.php b/resources/views/components/setting-tabs.blade.php deleted file mode 100644 index e50e673..0000000 --- a/resources/views/components/setting-tabs.blade.php +++ /dev/null @@ -1,24 +0,0 @@ -
- - - Akun - - - - Profil - - - - Kata - Sandi - - -
- - - * Geser ke kanan untuk melihat selengkapnya. - diff --git a/resources/views/livewire/studio/setting/account.blade.php b/resources/views/livewire/studio/setting/account.blade.php index 33ab882..499ab03 100644 --- a/resources/views/livewire/studio/setting/account.blade.php +++ b/resources/views/livewire/studio/setting/account.blade.php @@ -1,40 +1,208 @@ - @include('components.setting-tabs') +
+
+ {{ $pageTitle }} +
+
-
-
-
- -
- - Nama Pengguna * - - - +
+ - - Email * - - - +
+
+ Akun + Pengaturan untuk kredensial masuk Anda. +
- +
+
+
+
+ + Nama Pengguna * + + + - + + Email * + + + + + + + +
- +
+ + @can('update account') +
+ + Simpan + +
+ @endcan
- @can('update account') -
- - Simpan - + + +
+
+ Profil + Informasi mengenai data diri Anda.
- @endcan + +
+
+
+
+
+ + Nama Lengkap * + + + + +
+ + + Nomor Telepon * + + + + + + Gaji Pokok + + Rp + + + + + + + Tanggal Lahir * + + + + + + +
+ +
+ + + Jenis Kelamin * + + @foreach (\App\Enums\Gender::cases() as $gender) + + {{ $gender->label() }} + + @endforeach + + + + + +
+
+
+ + @can('update profile') +
+ + Simpan + +
+ @endcan +
+
+ + + +
+
+ Kata Sandi + Atur ulang kata sandi Anda. +
+ +
+ + Kata Sandi Saat Ini * + + + + + + Kata Sandi Baru * + + + + + + Konfirmasi Kata Sandi * + + + + + @can('update password') +
+ + Simpan + +
+ @endcan +
+
+ + + +
+
+ Notifikasi + Izinkan notifikasi untuk menerima pemberitahuan. +
+ +
+ + + + + + + + + + + + + + + +
+
diff --git a/resources/views/livewire/studio/setting/password.blade.php b/resources/views/livewire/studio/setting/password.blade.php deleted file mode 100644 index cdf4890..0000000 --- a/resources/views/livewire/studio/setting/password.blade.php +++ /dev/null @@ -1,42 +0,0 @@ - - @include('components.setting-tabs') - -
-
-
- -
- - Kata Sandi Saat Ini * - - - - - - Kata Sandi Baru * - - - - - - Konfirmasi Kata Sandi * - - - -
-
-
-
-
- - @can('update password') -
- - Simpan - -
- @endcan -
diff --git a/resources/views/livewire/studio/setting/profile.blade.php b/resources/views/livewire/studio/setting/profile.blade.php deleted file mode 100644 index 9ea1d0f..0000000 --- a/resources/views/livewire/studio/setting/profile.blade.php +++ /dev/null @@ -1,89 +0,0 @@ - - @include('components.setting-tabs') - -
-
-
-
-
- -
-
- - Nama Lengkap * - - - - -
- - - Nomor Telepon * - - - - - - Gaji Pokok - - Rp - - - - - - - Tanggal Lahir * - - - - - - -
- -
-
-
-
-
-
- -
- - - Jenis Kelamin * - - @foreach (\App\Enums\Gender::cases() as $gender) - - {{ $gender->label() }} - - @endforeach - - - - - - - - -
-
-
- - @can('update profile') -
- - Simpan - -
- @endcan -
diff --git a/routes/pages/studio.php b/routes/pages/studio.php index 2e16579..ffc7738 100644 --- a/routes/pages/studio.php +++ b/routes/pages/studio.php @@ -45,16 +45,12 @@ use App\Livewire\Studio\Master\User\Index as UserIndex; use App\Livewire\Studio\Setting\Account as AccountComponent; use App\Livewire\Studio\Setting\Application as ApplicationComponent; -use App\Livewire\Studio\Setting\Password as PasswordComponent; -use App\Livewire\Studio\Setting\Profile as ProfileComponent; -use App\Livewire\Studio\Setting\Whatsapp as WhatsappComponent; use Illuminate\Support\Facades\Route; Route::middleware('auth')->prefix('studio')->group(function () { Route::prefix('setting')->name('studio.setting.')->group(function () { - Route::get('/account/{user}', AccountComponent::class)->name('account')->middleware('can:view account'); - Route::get('/profile/{employee}', ProfileComponent::class)->name('profile')->middleware('can:view profile'); - Route::get('/password/{user}', PasswordComponent::class)->name('password')->middleware('can:view password'); + Route::get('/account', AccountComponent::class)->name('account')->middleware('can:view account'); + Route::get('/applications', ApplicationComponent::class)->name('application')->middleware('can:view application settings'); }); Route::prefix('dashboard')->name('studio.dashboard.')->group(function () { @@ -200,7 +196,4 @@ Route::delete('/{choose_us}/delete', ChooseUsComponent::class)->name('delete')->middleware('can:delete choose us'); }); }); - - Route::get('/settings/applications', ApplicationComponent::class)->name('studio.setting.application')->middleware('can:view application settings'); - // Route::get('/settings/whatsapp', WhatsappComponent::class)->name('studio.setting.whatsapp')->middleware('can:view whatsapp settings'); });