Files
coolify/app/Traits/DeletesUserSessions.php
2026-10-29 21:10:39 +01:00

40 lines
1.0 KiB
PHP

<?php
namespace App\Traits;
use App\Actions\User\RevokeUserTeamTokens;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Session;
trait DeletesUserSessions
{
/**
* Delete all sessions for this user.
* This will force the user to log in again on all devices.
*/
public function deleteAllSessions(): void
{
// Invalidate the current session only when it belongs to this user, not to an admin who changes it
if (Auth::id() === $this->id) {
Session::invalidate();
Session::regenerateToken();
}
DB::table('sessions')->where('user_id', $this->id)->delete();
RevokeUserTeamTokens::forUser($this->id);
}
/**
* Boot the trait.
*/
protected static function bootDeletesUserSessions()
{
static::updated(function ($user) {
// Check if password was changed
if ($user->wasChanged('password')) {
$user->deleteAllSessions();
}
});
}
}