happenv-com / filament-user-profile
Simple filament user profile.
Package info
github.com/happenv-com/filament-user-profile
pkg:composer/happenv-com/filament-user-profile
Requires
- php: ^8.3
- filament/filament: ^4.0|^5.0
- spatie/laravel-package-tools: ^1.14.0
- spatie/laravel-passkeys: ^1.7.1
- webard/agent: ^5.0
Requires (Dev)
- larastan/larastan: ^3.0
- laravel/pint: ^1.0
- laravel/sanctum: ^4.0
- orchestra/testbench: ^8.8|^9.0|^10.0|^11.0
- pestphp/pest: ^4.0
- pestphp/pest-plugin-laravel: ^4.0
- pestphp/pest-plugin-livewire: ^4.0
Suggests
- laravel/sanctum: Required for API token management in the user profile.
- spatie/laravel-passkeys: Adds support for passkeys in the user profile.
Provides
None
Conflicts
None
Replaces
None
README
This package draws inspiration from Filament Breezy but does not include two-factor authentication (2FA) functionality.
Rather than offering multiple plugin options, this package provides a streamlined approach to extending and replacing components.
Upgrading to 4.0
4.0 swaps the user agent parser again, this time to webard/agent — a maintained
fork of al-saloul/agent, which had not been released since January 2025 and emitted a PHP 8.4 deprecation on every
request that consumers could not suppress.
composer remove al-saloul/agent composer require happenv-com/filament-user-profile:^4.0
The namespace is unchanged, so if you extended BrowserSessions your use Alsaloul\Agent\Agent; import keeps
working. webard/agent declares "replace": {"al-saloul/agent": "*"}, so remove the old package first — the two
cannot be installed side by side.
Nothing else changed; browser, platform and device detection behave exactly as in 3.x.
Upgrading to 3.0
3.0 raises the minimum PHP version to 8.3. The package previously declared ^8.2, but
its own test suite could never run there — pestphp/pest 4.x requires ^8.3 — so 8.2 was
untested. The CI matrix now covers 8.3 and 8.4 only.
The browser sessions component no longer depends on the abandoned jenssegers/agent
(and its outdated mobiledetect/mobiledetectlib 2.x). It now uses the maintained fork
al-saloul/agent.
If your application requires jenssegers/agent only because of this package, remove it:
composer remove jenssegers/agent composer require happenv-com/filament-user-profile:^3.0
If you extended BrowserSessions and referenced the agent class, update the import:
-use Jenssegers\Agent\Agent; +use Alsaloul\Agent\Agent;
The public API (browser(), platform(), isDesktop(), isMobile(), isTablet())
is unchanged, so no other changes are required.
Installation
To install the package, execute the following command:
composer require happenv/filament-user-panel
Register Plugin
To register the plugin, use the following code snippet:
use Happenv\FilamentUserProfile\UserProfilePlugin; $panel->plugins([ UserProfilePlugin::make() ]);
Options
Register User Menu Item
Control whether the plugin should automatically register the user menu item:
UserProfilePlugin::make() ->registerUserMenu(false);
Custom Profile Page
Replace the entire ProfilePage with your custom component:
UserProfilePlugin::make() ->profilePage(MyProfileComponent::class);
Custom Profile Components
Manage the registered components and their order:
use Happenv\FilamentUserProfile\Livewire\PersonalInfo; use Happenv\FilamentUserProfile\Livewire\UpdatePassword; UserProfilePlugin::make() ->profileComponents([ 'personal_info' => PersonalInfo::class, 'update_password' => UpdatePassword::class, ]);
Replace Profile Component
Replace a specific profile component:
use My\Component\PersonalInfo; UserProfilePlugin::make() ->replaceProfileComponent('personal_info', PersonalInfo::class);
Register New Profile Component
Register a new profile component:
use My\Component\SomeComponent; UserProfilePlugin::make() ->registerProfileComponent('some_component', SomeComponent::class);
Remove Profile Component
Remove a specific profile component:
use My\Component\SomeComponent; UserProfilePlugin::make() ->removeProfileComponent('personal_info');
Laravel Sanctum
Laravel Sanctum is automatically detected, and a component to manage Sanctum tokens is displayed in the profile. Control the available abilities with the following code:
UserProfilePlugin::make() ->sanctumAbilities(['read', 'write']);
By default, all tokens are registered with all abilities ([*]).
Two-Factor Authentication
This package is compatible with stephenjude/filament-two-factor-authentication. Simply register the component as shown below:
UserProfilePlugin::make() ->registerProfileComponent('2fa', \Stephenjude\FilamentTwoFactorAuthentication\Livewire\TwoFactorAuthentication::class)