feat(user): implement session deletion on password reset

This commit is contained in:
Andras Bacsai
2025-03-21 15:45:29 +01:00
parent 26f4d37346
commit d7d80e926e
6 changed files with 48 additions and 10 deletions

View File

@@ -0,0 +1,34 @@
<?php
namespace App\Traits;
use DB;
use Illuminate\Support\Facades\Session;
trait DeletesUserSessions
{
/**
* Delete all sessions for the current user.
* This will force the user to log in again on all devices.
*/
public function deleteAllSessions(): void
{
// Invalidate the current session
Session::invalidate();
Session::regenerateToken();
DB::table('sessions')->where('user_id', $this->id)->delete();
}
/**
* Boot the trait.
*/
protected static function bootDeletesUserSessions()
{
static::updated(function ($user) {
// Check if password was changed
if ($user->isDirty('password')) {
$user->deleteAllSessions();
}
});
}
}