$this->options['name'] ?? text( label: 'Name', required: true, ), 'email' => $this->options['email'] ?? text( label: 'Email address', required: true, validate: fn (string $email): ?string => match (true) { ! filter_var($email, FILTER_VALIDATE_EMAIL) => 'The email address must be valid.', static::getUserModel()::where('email', $email)->exists() => 'A user with this email address already exists', default => null, }, ), 'password' => Hash::make($this->options['password'] ?? password( label: 'Password', required: true, )), ]; } protected function createUser(): Authenticatable { return static::getUserModel()::create($this->getUserData()); } protected function sendSuccessMessage(Authenticatable $user): void { $loginUrl = Filament::getLoginUrl(); $this->components->info('Success! ' . ($user->getAttribute('email') ?? $user->getAttribute('username') ?? 'You') . " may now log in at {$loginUrl}"); } protected function getAuthGuard(): Guard { return Filament::auth(); } protected function getUserProvider(): UserProvider { return $this->getAuthGuard()->getProvider(); } protected function getUserModel(): string { /** @var EloquentUserProvider $provider */ $provider = $this->getUserProvider(); return $provider->getModel(); } public function handle(): int { $this->options = $this->options(); $user = $this->createUser(); $this->sendSuccessMessage($user); return static::SUCCESS; } }