Set the auth.logouturl property during init

When user signed out in the UI only the web session in Gerrit
was invalidated, but not that in UAA. Consequently when the
user clicked on "Sign In" again the UAA did not present the
login screen but directly returned a new access token. This
behavior can be prevented by configuring an explicit logout
page with the auth.logouturl in the Gerrit configuration.

This patch enhances the plugin's init step to configure the
auth.logouturl property to point to /logout.do in UAA. This
will close the UAA web session and the user can login with
different credentials again.

Change-Id: Id30b9d0d0836439040c05867a0d82e14333d8563
Signed-off-by: Michael Ochmann <michael.ochmann@sap.com>
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 f0b76fb..fa7bdfb 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/cfoauth/InitOAuthConfig.java
@@ -14,8 +14,10 @@
 
 package com.googlesource.gerrit.plugins.cfoauth;
 
+import com.google.common.base.CharMatcher;
 import com.google.gerrit.extensions.annotations.PluginName;
 import com.google.gerrit.pgm.init.api.ConsoleUI;
+import com.google.gerrit.pgm.init.api.InitFlags;
 import com.google.gerrit.pgm.init.api.InitStep;
 import com.google.gerrit.pgm.init.api.Section;
 import com.google.inject.Inject;
@@ -30,13 +32,15 @@
   static final String DEFAULT_SERVER_URL = "http://localhost:8080/uaa";
   static final String DEFAULT_CLIENT_ID = "gerrit";
 
+  private final InitFlags flags;
   private final ConsoleUI ui;
   private final Section cfg;
 
   @Inject
-  InitOAuthConfig(ConsoleUI ui,
+  InitOAuthConfig(InitFlags flags, ConsoleUI ui,
       Section.Factory sections,
       @PluginName String pluginName) {
+    this.flags = flags;
     this.ui = ui;
     this.cfg = sections.get(PLUGIN_SECTION, pluginName);
   }
@@ -49,6 +53,8 @@
     cfg.passwordForKey("Client secret", CLIENT_SECRET);
     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");
   }
 
   @Override