Hashear una contraseña en Filament

Una de las cosas que más repito cuando hago una plataforma basada en Laravel y usando Filament es la gestión de usuarios en el panel de administración.

Normalmente, el pedacito de código que uso es:

use Filament\Forms\Components\TextInput;
use Filament\Pages\Page;
use Illuminate\Support\Facades\Hash;
 
TextInput::make('password')
    ->password()
    ->dehydrateStateUsing(fn ($state) => Hash::make($state))
    ->dehydrated(fn ($state) => filled($state))
    ->required(fn (string $context): bool => $context === 'create')

Vamos a explicar qué es lo que hace:

  • →password() → para usar el type="password" en el input y que no se vea lo que el usuario escribe
  • →dehydrateStateUsing → para hashear la contraseña antes de guardar el formulario
  • →dehydrated → define si se tiene que hashear la contraseña o no. Sólo se hasheará si está el campo relleno
  • →required → para que solo sea obligatorio rellenarla en caso de estar creando un nuevo usuario, pero que sea opcional al editar