From ddd78658e8c67754b2fb3bba648b56153545f535 Mon Sep 17 00:00:00 2001 From: Andras Bacsai <5845193+andrasbacsai@users.noreply.github.com> Date: Sun, 28 Dec 2025 14:02:41 +0100 Subject: [PATCH] fix(user): improve cache key and remove redundant route check MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Include sessionTeamId in currentTeam() cache key to prevent stale team data when users switch teams - Update refreshSession() to use new cache key format - Remove redundant routeIs('settings.index') check since settings.* already matches it 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- app/Http/Middleware/DecideWhatToDoWithUser.php | 2 +- app/Models/User.php | 2 +- bootstrap/helpers/shared.php | 5 ++++- 3 files changed, 6 insertions(+), 3 deletions(-) diff --git a/app/Http/Middleware/DecideWhatToDoWithUser.php b/app/Http/Middleware/DecideWhatToDoWithUser.php index b62e874cc..dea9f6a9d 100644 --- a/app/Http/Middleware/DecideWhatToDoWithUser.php +++ b/app/Http/Middleware/DecideWhatToDoWithUser.php @@ -27,7 +27,7 @@ public function handle(Request $request, Closure $next): Response return $next($request); } // Instance admins can access settings and admin routes regardless of subscription - if (isInstanceAdmin() && ($request->routeIs('settings.*') || $request->routeIs('settings.index') || $request->path() === 'admin')) { + if (isInstanceAdmin() && ($request->routeIs('settings.*') || $request->path() === 'admin')) { return $next($request); } if (! auth()->user()->hasVerifiedEmail()) { diff --git a/app/Models/User.php b/app/Models/User.php index d64835c42..560f21d0f 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -319,7 +319,7 @@ public function currentTeam(): ?Team return null; } - return Cache::remember('team:'.$this->id, 3600, function () use ($sessionTeamId) { + return Cache::remember('user:'.$this->id.':team:'.$sessionTeamId, 3600, function () use ($sessionTeamId) { return Team::find($sessionTeamId); }); } diff --git a/bootstrap/helpers/shared.php b/bootstrap/helpers/shared.php index f9645fd9f..d6b573965 100644 --- a/bootstrap/helpers/shared.php +++ b/bootstrap/helpers/shared.php @@ -182,8 +182,11 @@ function refreshSession(?Team $team = null): void $team = User::find(Auth::id())->teams->first(); } } + // Clear old cache key format for backwards compatibility Cache::forget('team:'.Auth::id()); - Cache::remember('team:'.Auth::id(), 3600, function () use ($team) { + // Use new cache key format that includes team ID + Cache::forget('user:'.Auth::id().':team:'.$team->id); + Cache::remember('user:'.Auth::id().':team:'.$team->id, 3600, function () use ($team) { return $team; }); session(['currentTeam' => $team]);