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();
     }
   }