smony/filament-user-sessions
Filament plugin that lists every active user session—user, IP, parsed device and browser, last activity—with one-click and bulk revoke to force-logout anyone. Flags logins from new devices. Requires Laravel's database session driver.
composer require plus one ->plugin() call, so the decision is really "spend a sprint building an internal page we'll maintain forever" vs. "adopt ~one page + one widget."session_known_devices table plus the ⚠️ flag and opt-in NewDeviceLogin notification is a cheap "did something change for this user?" signal. It informs decisions like: do we invest in real device fingerprinting? Is anomalous-login alerting worth building? Use it to gather signal before committing roadmap.viewAny/view/delete/deleteAny), which means "who is allowed to kick out a superadmin" becomes an explicit product decision rather than a default. Good forcing function: you can decide that a support role may view sessions but only revoke non-admin users, and encode it without forking.^1.0 line) means this is not a blocker when you plan a Filament major-version upgrade — relevant input to "when do we upgrade the admin panel."Consider it when all of these hold:
SESSION_DRIVER=database. This is a hard gate — file, cookie, redis, or array drivers mean the plugin has nothing to read. Verify this before the evaluation, not during rollout.SessionPolicy in your AuthServiceProvider if that's too broad — and it usually is.Look elsewhere (or build) when:
SESSION_DRIVER is not database, or you're planning to move to Redis-backed sessions — the plugin's entire data source would disappear mid-flight.For executives (one line): A small, free, MIT-licensed plugin that gives our Filament admin panel a "see everyone logged in and kick them out" screen — the basic account-security control customers and auditors ask about — in days instead of a sprint, with no vendor contract.
For engineering leadership:
NewDeviceLogin notification.composer require, one plugin registration in the panel provider, session:table + migrate (the migration also creates session_known_devices), and optional config publishing. Realistically an afternoon including policy work.SESSION_DRIVER=database. Confirm this first; it is the single biggest disqualifier.SessionPolicy. This is a launch blocker, not a nice-to-have.ResolvesNewDeviceRecipients and point config at it. Budget that work; otherwise the feature silently does nothing.Recommendation: pilot it behind a superadmin-only policy in one panel, verify the session driver and notification wiring in staging, and treat it as a UX-and-ops convenience layer — never as the control that satisfies an account-security audit.
How can I help you explore Laravel packages today?