tallcms/filament-registration
Installation
composer require tallcms/filament-registration
Publish the package assets and config:
php artisan vendor:publish --provider="TallCms\FilamentRegistration\FilamentRegistrationServiceProvider" --tag="filament-registration-config"
php artisan vendor:publish --provider="TallCms\FilamentRegistration\FilamentRegistrationServiceProvider" --tag="filament-registration-migrations"
Run migrations:
php artisan migrate
Configure
Edit config/filament-registration.php to set:
default_role).cloudflare_turnstile or google_recaptcha_v3).First Use Case Register a new user via the Filament registration form:
/register (or your configured route).default_role.Customizing the Registration Form Extend the default form using Filament’s form builder:
use TallCms\FilamentRegistration\Forms\RegistrationForm;
RegistrationForm::make()
->columns(2)
->addFields([
// Custom fields (e.g., name, terms checkbox)
TextInput::make('name')->required(),
Checkbox::make('terms')->required()->label('Accept Terms'),
]);
Role Assignment Logic
Override default role assignment in AppServiceProvider:
use TallCms\FilamentRegistration\Events\Registering;
Registering::macro('assignRole', function ($user, $roleName) {
$user->assignRole($roleName);
});
Captcha Integration
Configure captcha in config/filament-registration.php:
'captcha' => [
'provider' => 'cloudflare_turnstile',
'cloudflare_turnstile_site_key' => env('CLOUDFLARE_TURNSTILE_SITE_KEY'),
'google_recaptcha_v3_site_key' => env('GOOGLE_RECAPTCHA_SITE_KEY'),
],
Validate captcha in a custom form:
use TallCms\FilamentRegistration\Concerns\ValidatesCaptcha;
class CustomRegistrationForm extends RegistrationForm {
use ValidatesCaptcha;
}
Email Verification Extend the default email verification logic:
use TallCms\FilamentRegistration\Events\Registered;
Registered::listen(function ($user) {
$user->sendEmailVerificationNotification();
});
use TallCms\FilamentRegistration\Pages\Register;
Register::register();
Register::middleware(['auth', 'can:register-users']);
Captcha Validation Failures
.env and config.dd($request->input('cf-turnstile-response')); // Cloudflare
dd($request->input('g-recaptcha-response')); // Google
Role Assignment Conflicts
default_role is not assigned, verify:
assignRole macro is properly bound (check AppServiceProvider).Migration Issues
php artisan migrate:fresh if the filament_registration table is corrupted.users table has a role_id column if using role assignment.Form Submission Redirects
Register page:
public function getRedirectUrl(): string {
return route('filament.pages.dashboard');
}
Log Registration Events
Listen to events in AppServiceProvider:
Registered::listen(function ($user) {
\Log::info('User registered: ' . $user->email);
});
Disable Captcha Temporarily
Set 'captcha' => ['enabled' => false] in config for testing.
Custom Validation Extend the form’s validation rules:
public static function getValidationRules(): array {
return [
...parent::getValidationRules(),
'name' => 'required|string|max:255',
];
}
Custom Registration Logic
Override the create method in a custom form:
public function create(array $data): User {
$user = parent::create($data);
// Custom logic (e.g., send welcome email)
return $user;
}
Dynamic Role Assignment Use a closure in the config:
'default_role' => function ($user) {
return $user->email === '[email protected]' ? 'admin' : 'user';
},
Multi-Language Support Translate form fields via Filament’s localization:
TextInput::make('name')
->label(__('filament-registration::registration.name'))
->required(),
How can I help you explore Laravel packages today?