feat: Add Change Password action for students, including a modal for password input and success notification upon update. Update date display format in student form and improve code readability in StudentsTable.

This commit is contained in:
Yoga Pangestu 2026-03-29 20:48:58 +07:00
parent f0e6841628
commit 4c0daeb09e
3 changed files with 47 additions and 1 deletions

View File

@ -0,0 +1,43 @@
<?php
namespace App\Filament\Resources\Master\Students\Actions;
use App\Filament\Support\SystemNotification;
use App\Models\Student;
use Filament\Actions\Action;
use Filament\Forms\Components\TextInput;
use Filament\Support\Enums\Width;
use Filament\Support\Icons\Heroicon;
use Illuminate\Support\Facades\Hash;
class ChangePasswordAction extends Action
{
protected function setUp(): void
{
parent::setUp();
$this->label('Ganti Kata Sandi')
->icon(Heroicon::OutlinedKey)
->color('warning')
->modalWidth(Width::Medium)
->schema([
TextInput::make('password')
->label('Kata Sandi Baru')
->password()
->required()
->minLength(8)
->revealable(filament()->arePasswordsRevealable())
->default('Minimal8@'),
])
->action(function (Student $record, array $data): void {
$record->user?->update([
'password' => Hash::make($data['password']),
]);
SystemNotification::success(
'Kata sandi berhasil diubah! 🔑',
"Kata sandi untuk mahasiswa {$record->full_name} telah diperbarui."
)->send();
});
}
}

View File

@ -98,7 +98,7 @@ public static function configure(Schema $schema): Schema
->placeholder('Pilih Tanggal') ->placeholder('Pilih Tanggal')
->required() ->required()
->native(false) ->native(false)
->displayFormat('l, d F Y') ->displayFormat('d F Y')
->maxDate(Carbon::now()->subYears(15)), ->maxDate(Carbon::now()->subYears(15)),
TextInput::make('place_of_birth') TextInput::make('place_of_birth')

View File

@ -10,6 +10,7 @@
use App\Filament\Actions\Cheerful\RestoreAction; use App\Filament\Actions\Cheerful\RestoreAction;
use App\Filament\Actions\DefaultBulkActions; use App\Filament\Actions\DefaultBulkActions;
use App\Filament\Columns\TimestampColumns; use App\Filament\Columns\TimestampColumns;
use App\Filament\Resources\Master\Students\Actions\ChangePasswordAction;
use App\Models\Student; use App\Models\Student;
use Filament\Actions\BulkActionGroup; use Filament\Actions\BulkActionGroup;
use Filament\Support\Enums\Width; use Filament\Support\Enums\Width;
@ -92,6 +93,8 @@ public static function configure(Table $table): Table
->visible(fn () => auth()->user()->hasRole(RoleEnum::Developer)), ->visible(fn () => auth()->user()->hasRole(RoleEnum::Developer)),
]) ])
->recordActions([ ->recordActions([
ChangePasswordAction::make('changePassword'),
EditAction::make() EditAction::make()
->modalWidth(Width::Large), ->modalWidth(Width::Large),