Fix CacheBasedWebSession current user on login/logout
When running a login or logout flow, the GetUserFilter triggers a first
WebSession.getUser() causing the loading of current user as anonymous
(or IdentifiedUser).
When another filter tries to retrieve the current user from a
Provider<CurrentUser> would then get anonymous even if the user is
actually logged in or just logged out.
Fix this situation by forcing the re-creation of current user after a
session login or logout.
Change-Id: Ia33faf2cdd406e910339f3aebbc054a8f1f00e7a
diff --git a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/CacheBasedWebSession.java b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/CacheBasedWebSession.java
index 7d8d22c..fa2e0e3 100644
--- a/gerrit-httpd/src/main/java/com/google/gerrit/httpd/CacheBasedWebSession.java
+++ b/gerrit-httpd/src/main/java/com/google/gerrit/httpd/CacheBasedWebSession.java
@@ -161,6 +161,7 @@
key = manager.createKey(id);
val = manager.createVal(key, id, rememberMe, identity, null, null);
saveCookie();
+ user = identified.create(val.getAccountId());
}
/** Set the user account for this current request only. */
@@ -178,6 +179,7 @@
key = null;
val = null;
saveCookie();
+ user = anonymousProvider.get();
}
}