solution-forest/filament-loginguard
Filament plugin that adds login guard and session management to your panel: track active devices, spot suspicious sign-ins, and let users review or revoke other sessions from a simple account page.
Architecture fit. solution-forest/filament-loginguard is a Filament panel plugin that layers a device/session registry, trusted-device tracking (trusted_at), and self-service revocation ("My Devices" → "This isn't me") onto Laravel's native auth. It is a cross-cutting authentication concern rather than a UI convenience, so it should be classified as a security-critical dependency in our inventory, not as a panel add-on.
Integration feasibility. Very low friction. v0.7.1 is a composer update with no schema changes and no migration. No config or panel-provider changes are implied by the notes.
Technical risk.
Key questions.
device_id/session index supporting the deletion query at our session-table scale?Stack fit. Laravel with Filament panel(s), PHP 8.1+, database session driver strongly preferred so that "delete session rows" is a real operation. Applications on Redis or file sessions need explicit validation before we claim the fix is effective.
Migration path. Pin solution-forest/filament-loginguard to 0.7.1 exactly (not a caret range), run composer update solution-forest/filament-loginguard, commit the lock file. No migration, no schema change, so deploy is reversible by version pin alone — but the security remediation below is not reversible and is the real migration work.
Compatibility. Confirm the package's Filament major-version constraint against our panels, and audit for local overrides of the sign-out flow or of the revocation service — since the fix reuses the existing sign-out path, any subclass or override we maintain must be re-verified. Verify our logout listeners still fire.
Sequencing.
0.7.1 in non-production and exercise "This isn't me" end-to-end with real database sessions, asserting the session row is actually gone and the old session cookie no longer authenticates.Maintenance. Small-vendor, pre-1.0 package with a security-relevant blast radius. We need a standing process: watch releases and advisories, pin versions, and treat every bump as a security review rather than a routine chore.
Support. Two predictable ticket classes follow this release. First, a wave of "I was signed out unexpectedly" from users whose devices were previously (ineffectively) revoked — this is the fix working. Second, support staff encountering 403 when attempting to revoke a device tied to their own session. Both need runbook entries and user-facing copy before deploy, not after.
Scaling. Per-revocation cost is one indexed delete plus a small transaction — negligible. The watch item is session-table growth and the absence of a pruning policy for expired rows and orphaned device mappings, which degrades the deletion query over time.
Failure modes.
Ramp-up. Low. Filament-native, no new infrastructure, no migration. The genuine learning curve is conceptual: the device↔session↔trust model and the meaning of trusted_at, which engineers and support both need in order to reason about what revocation now actually guarantees.
How can I help you explore Laravel packages today?