From 17cc28c0410f38751fcbd047aeecf59421b2cebd Mon Sep 17 00:00:00 2001 From: Yoga Pangestu Date: Thu, 13 Nov 2025 13:03:11 +0700 Subject: [PATCH] fi(user): memperbaiki kode untuk employee - membuat fitur reset password - menambahkan foreign id di relasi articles - menambahkan permission --- app/Livewire/Studio/Master/User/Index.php | 12 ++++++++++++ app/Models/Employee.php | 1 + app/Models/User.php | 2 +- database/seeders/RolePermissionSeeder.php | 1 + .../confirmation/reset-password.blade.php | 17 +++++++++++++++++ .../livewire/studio/master/user/index.blade.php | 13 ++++++++++++- 6 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 resources/views/components/confirmation/reset-password.blade.php diff --git a/app/Livewire/Studio/Master/User/Index.php b/app/Livewire/Studio/Master/User/Index.php index b5ee853..1a353ba 100644 --- a/app/Livewire/Studio/Master/User/Index.php +++ b/app/Livewire/Studio/Master/User/Index.php @@ -7,6 +7,7 @@ use App\Traits\WithConfirmation; use App\Traits\WithToast; use Flux\Flux; +use Illuminate\Support\Facades\Hash; use Livewire\Attributes\Title; use Livewire\Component; @@ -87,11 +88,22 @@ public function delete(User $user) { $user->delete(); + $this->loadEmployees(); + $this->toast('Pegawai berhasil dihapus.'); Flux::modals()->close(); } + public function resetPassword(User $user) + { + $user->update(['password' => Hash::make(config('myconfig.password_default'))]); + + $this->toast('Kata sandi pegawai berhasil direset.'); + + Flux::modals()->close(); + } + public function render() { return view('livewire.studio.master.user.index', [ diff --git a/app/Models/Employee.php b/app/Models/Employee.php index c6d5b08..f3af7a0 100644 --- a/app/Models/Employee.php +++ b/app/Models/Employee.php @@ -43,6 +43,7 @@ public static function generateEmployeeCode(): string $lastEmployee = self::where('code', 'like', "$prefix$year%") ->orderBy('code', 'desc') + ->withTrashed() ->first(); if ($lastEmployee) { diff --git a/app/Models/User.php b/app/Models/User.php index 866bd87..7bdd5ee 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -89,7 +89,7 @@ public function outlets(): BelongsToMany public function articles(): HasMany { - return $this->hasMany(Article::class); + return $this->hasMany(Article::class, 'author_id'); } public function payrolls(): HasMany diff --git a/database/seeders/RolePermissionSeeder.php b/database/seeders/RolePermissionSeeder.php index a27d1d6..9239c0c 100644 --- a/database/seeders/RolePermissionSeeder.php +++ b/database/seeders/RolePermissionSeeder.php @@ -42,6 +42,7 @@ public function run(): void 'create user', 'update user', 'delete user', + 'reset password user', 'view formula', 'create formula', diff --git a/resources/views/components/confirmation/reset-password.blade.php b/resources/views/components/confirmation/reset-password.blade.php new file mode 100644 index 0000000..8a04455 --- /dev/null +++ b/resources/views/components/confirmation/reset-password.blade.php @@ -0,0 +1,17 @@ + +
+
+ {{ $confirmingTitle }} + {{ $confirmingMessage }} +
+
+ + + Batal + + + {{ $confirmingButtonText }} + +
+
+
diff --git a/resources/views/livewire/studio/master/user/index.blade.php b/resources/views/livewire/studio/master/user/index.blade.php index 22f3bfb..b48d6a2 100644 --- a/resources/views/livewire/studio/master/user/index.blade.php +++ b/resources/views/livewire/studio/master/user/index.blade.php @@ -158,6 +158,16 @@ class="text-gray-700 dark:text-gray-300">{{ $employee['user']['resign_date'] }}< @if (auth()->id() !== $employee['user']['id'])
+ @can('reset password user') + + + + + + + @endcan + @can('update user') {{ $employee['user']['resign_date'] }}< + wire:click="$dispatch('fn:confirmAction', {id: '{{ $employee['user']['hash'] }}'})"> @@ -184,4 +194,5 @@ class="text-gray-700 dark:text-gray-300">{{ $employee['user']['resign_date'] }}<
@include('components.confirmation.delete') + @include('components.confirmation.reset-password')