ipatco/filament-profile
Filament Profile provides a ready-to-use profile page for Filament panels, letting authenticated users manage their name, email, avatar, and password. It integrates cleanly with Laravel and Filament authentication, includes sensible defaults, and can be customized to match your panel's design.
This is the initial 1.0 release of iPatco/filament-profile, a Filament plugin that drops a Breeze-style profile page into a panel: profile form, active browser sessions, and an account widget, plus a configurable profile menu entry.
composer require ipatco/filament-profile
app/Providers/Filament/AdminPanelProvider.php). Check the README for the exact FQCN — it follows the usual iPatco\FilamentProfile\...Plugin::make() convention:
->plugin(FilamentProfilePlugin::make())
php artisan vendor:publish --provider="iPatco\FilamentProfile\FilamentProfileServiceProvider"
php artisan optimize:clear, or at minimum route:clear / config:clear) and load the panel. A "Profile" item should appear in the user menu.Where to look first: the published config file (menu registration flags, route/slug, middleware, form class), then the package's Pages/ directory to see the profile page class you'd extend. The profile page itself is the first real use case — log in as any user, hit the menu item, and confirm the form saves and the sessions list renders.
Let the plugin own the menu item, or opt out. The headline feature in this release is configurable menu registration. For a single-panel app, leave it on and delete any hand-rolled ->userMenuItems([...]) profile link. For multi-panel apps or panels with a custom user menu, disable auto-registration and add the item yourself so you control ordering, icons, and visibility per guard.
Publish-then-extend, don't fork. The profile form is publishable. Publish the view/form class, then point the config at your own class rather than editing vendor files. This keeps you on the upgrade path for the page shell and sessions/account widget while letting you add fields (avatar, timezone, notification prefs) to the form.
Scope to the right guard. Register the plugin only on panels whose users you want to expose profile editing for. If you have separate admin and web guards with different user models, register per panel and verify the sessions/account widget resolve the correct Auth guard — the account widget in particular assumes a "current user" context and will misbehave if the panel guard doesn't match the page's expected guard.
Sessions block pairs with password confirmation. The "log out other browser sessions" action typically wants a password re-entry. If you gate the profile route behind password.confirm, test the flow end-to-end; if you don't, decide deliberately whether that's acceptable for your app and document it.
Treat it as a Breeze-parity surface, not a full auth module. This package gives you the profile page. Registration, password reset, and email verification still belong to Filament's auth features. Don't try to make this plugin replace them.
Testing. Feature-test the page with actingAs($user) and assert the form submits and the profile updates. For sessions assertions you'll need the database session driver in your test env — see gotchas.
SESSION_DRIVER=file or cookie, the active-sessions section will be empty or absent. Switch to database (and run the sessions migration) if session management is the feature you actually want.userMenuItems entry is the most likely day-one mistake. Pick one."ipatco/filament-profile": "^1.0" rather than dev-main, and check the composer constraints against your Filament major version before upgrading Filament. A brand-new plugin rarely has broad version ranges battle-tested yet.route:clear / config:clear; in deployed environments remember php artisan optimize after changing plugin config.authGuard, the route middleware stack the plugin registers, and whether the user model implements the contracts Filament expects (FilamentUser, and whatever the account widget touches). Filament swallows a lot of this into a 403 rather than an exception.How can I help you explore Laravel packages today?