Xyren XYREN
← All update notes
admin realtime security

Updates March 20th — Live actions and safer password resets

Real-time ForceLogout and ForceReload over WebSockets, a proper forced-password-change flow, and the user-management row Actions dropdown.

A
Austen Green
Author

Hello everyone!

This update is almost entirely about the admin area being able to do things to a live user instead of just looking at them. Previously the Users table was a list — now it's a control panel.

The Actions dropdown

Every row in the user table now has a proper Actions menu with everything you'd want at hand: view details, edit, masquerade (impersonate them so you can reproduce a bug from their seat), activate or deactivate, mark email verified, send a password reset, disable 2FA, force sign-out, and delete. It's implemented as a teleported dropdown — the menu renders into <body> so it floats above every other table row instead of getting clipped by the row boundary.

Masquerading is powered by lab404/laravel-impersonate. Super-admins get a "Leave impersonation" banner at the top of the page while they're masquerading, so you can't forget you're acting as someone else.

Live Force-Logout and Force-Reload over WebSockets

Laravel Reverb is now serving our WebSocket traffic, which unlocks a pair of admin actions that previously would have required the user to refresh:

Both events are tied to the signed-in user's channel, so you can't accidentally reload a stranger — only someone Reverb has authenticated.

Forced password-change flow

A super-admin can now "Force reset password" on any user. That generates a temporary password you see exactly once on screen, sets the user's password_change_required flag, and fires the ForceLogout event. Next time that user logs in, they get dropped onto a "choose a new password" screen and can't navigate anywhere else until they set one. It's the flow you'd expect from a corporate help desk — minus the awkward ticket number.

Same machinery backs the new-user invite flow, so invitees land on the password-setup screen the first time they sign in.

Changelog

So what's next? Backups, a real dev-tools drawer (Horizon, Telescope, Pulse), and a performance sweep — a handful of long-running commands have been stacking and leaking MySQL connections.

All the best, Austen