Merge "Deliver expiresAt and providerId for access token"
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/CFOAuthService.java b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/CFOAuthService.java
index d754307..9647f1d 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/CFOAuthService.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/CFOAuthService.java
@@ -78,10 +78,7 @@
     if (token == null) {
       throw new UAAClientException("Must provide an access token");
     }
-    AccessToken accessToken = uaaClient.toAccessToken(token.getToken());
-    UserInfo userInfo = accessToken.getUserInfo();
-    userInfo.setDisplayName(uaaClient.getDisplayName(token.getToken()));
-    return getAsOAuthUserInfo(userInfo);
+    return getAsOAuthUserInfo(uaaClient.toAccessToken(token.getToken()));
   }
 
   @Override
@@ -113,10 +110,7 @@
           // token; if that succeeds the user is authenticated
           accessToken = uaaClient.getAccessToken(username, secret);
         }
-        UserInfo userInfo = accessToken.getUserInfo();
-        userInfo.setDisplayName(
-            uaaClient.getDisplayName(accessToken.getValue()));
-        return getAsOAuthUserInfo(userInfo);
+        return getAsOAuthUserInfo(accessToken);
       }
     } catch (UAAClientException e) {
       throw new IOException("Authentication error", e);
@@ -138,7 +132,10 @@
         accessToken.getExpiresAt() * 1000, providerId);
   }
 
-  private static OAuthUserInfo getAsOAuthUserInfo(UserInfo userInfo) {
+  private OAuthUserInfo getAsOAuthUserInfo(AccessToken accessToken) {
+    UserInfo userInfo = accessToken.getUserInfo();
+    userInfo.setDisplayName(
+        uaaClient.getDisplayName(accessToken.getValue()));
     return new OAuthUserInfo(userInfo.getExternalId(),
         userInfo.getUserName(), userInfo.getEmailAddress(),
         userInfo.getDisplayName(), null);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java
index c532357..c2c54ff 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java
@@ -36,6 +36,7 @@
   private final InitFlags flags;
   private final ConsoleUI ui;
   private final Section cfg;
+  private final String redirectUrl;
 
   @Inject
   InitOAuthConfig(InitFlags flags, ConsoleUI ui,
@@ -44,6 +45,7 @@
     this.flags = flags;
     this.ui = ui;
     this.cfg = sections.get(PLUGIN_SECTION, pluginName);
+    this.redirectUrl = getRedirectUrl(sections);
   }
 
   @Override
@@ -60,7 +62,13 @@
     cfg.set(VERIFIY_SIGNATURES, Boolean.toString(
         ui.yesno(true, "Verify token signatures", VERIFIY_SIGNATURES)));
     flags.cfg.setString("auth", null, "logouturl", CharMatcher.is('/')
-        .trimTrailingFrom(cfg.get(SERVER_URL)) + "/logout.do");
+        .trimTrailingFrom(cfg.get(SERVER_URL)) + "/logout.do?redirect="
+            + redirectUrl);
+  }
+
+  private static String getRedirectUrl(Section.Factory sections) {
+    Section gerrit = sections.get("gerrit", null);
+    return CharMatcher.is('/').trimTrailingFrom(gerrit.get("canonicalWebUrl"));
   }
 
   @Override