fix(user): improve cache key and remove redundant route check

- 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 <noreply@anthropic.com>
This commit is contained in:
Andras Bacsai
2025-12-28 14:02:41 +01:00
parent 2743229cc4
commit ddd78658e8
3 changed files with 6 additions and 3 deletions

View File

@@ -27,7 +27,7 @@ class DecideWhatToDoWithUser
return $next($request); return $next($request);
} }
// Instance admins can access settings and admin routes regardless of subscription // 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); return $next($request);
} }
if (! auth()->user()->hasVerifiedEmail()) { if (! auth()->user()->hasVerifiedEmail()) {

View File

@@ -319,7 +319,7 @@ class User extends Authenticatable implements SendsEmail
return null; 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); return Team::find($sessionTeamId);
}); });
} }

View File

@@ -182,8 +182,11 @@ function refreshSession(?Team $team = null): void
$team = User::find(Auth::id())->teams->first(); $team = User::find(Auth::id())->teams->first();
} }
} }
// Clear old cache key format for backwards compatibility
Cache::forget('team:'.Auth::id()); 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; return $team;
}); });
session(['currentTeam' => $team]); session(['currentTeam' => $team]);