rawilk/profile-filament-plugin
A Filament plugin that adds a customizable user profile to any panel, with multi-factor authentication, password management, session management, and more. Opinionated yet flexible, it handles the boilerplate so you can ship faster.
^3.2 (minimum bumped in v0.3.0) and a Laravel version supported by the release you pin. The package is pre-release but described as production-ready; pin a specific version in composer.json because APIs can change without a major bump.composer require rawilk/profile-filament-plugin
php artisan vendor:publish --tag="profile-filament-migrations"
php artisan migrate
php artisan vendor:publish --tag="profile-filament-config"
use Rawilk\ProfileFilament\ProfileFilamentPlugin;
public function panel(Panel $panel): Panel
{
return $panel
// ...
->plugin(
ProfileFilamentPlugin::make()
);
}
config/profile-filament.php. Review the user model/guard assumptions, enabled features, password rules, MFA/passkey behavior, session management, and email-change settings before exposing the pages.Rawilk\ProfileFilament\Filament\Clusters\Profile\ProfileInfo, Settings, Security, and Sessions. The v0.3.0 release moved these from the older Filament\Pages namespace.users, sessions, MFA, passkey, or email-verification tables. Reconcile existing schema instead of blindly applying duplicate columns/tables.Mfa service; release notes mention pushChallengedUser. Use service-level calls for programmatic challenge flows rather than duplicating MFA session logic in controllers or Filament actions.SESSION_DRIVER and session storage support enumeration/revocation. Database sessions are the safest assumption for active-device management; test that revoking other sessions preserves the current session.APP_URL, mail configuration, signed URLs, and queue workers are correct. If you customize redirects, account for the InvalidVerificationLinkException::redirectTo signature fix in v0.3.4.localhost in development. Keep the package’s frontend assets and @simplewebauthn/browser expectations aligned with the installed package version; release notes show major JS dependency bumps.addPage and navigation from the plugin, do not build customization around those old APIs. Use Filament’s native navigation groups/clusters and register custom pages through the panel. For custom profile fields, either extend the cluster page classes where documented or keep an adjacent Filament page/resource and link it from the profile area.actingAs() with the correct guard and assert redirects/notifications, not just page loads.Filament\Pages to Filament\Clusters\Profile, addPage/navigation were removed, IsProfilePage was removed, and the old layout component was removed. Any custom code referencing those will break.php artisan config:clear
php artisan route:clear
php artisan view:clear
php artisan filament:optimize-clear
In production, rebuild caches and Filament assets (php artisan filament:assets) if styles or components look stale.migrate.APP_URL, panel domain, or reverse-proxy scheme can invalidate existing passkeys. Ensure trusted proxies and HTTPS termination are configured correctly before enabling passkeys in production.SESSION_DRIVER, session table existence, and whether the package’s session model matches your app. Always verify that “logout other sessions” does not log out the current device.APP_URL, proxy headers, mail URL generation, or expired signed URLs. Test with the same host/protocol users will actually use.php artisan route:list --path=profile
Then check Filament panel registration, auth guard resolution, MFA/sudo session state, and storage/logs/laravel.log. If styles are missing after an upgrade, clear Filament caches and republish assets rather than overriding package CSS blindly.How can I help you explore Laravel packages today?