diff --git a/src/main/java/com/google/gerrit/client/Gerrit.java b/src/main/java/com/google/gerrit/client/Gerrit.java index 654ec74b68..f17ebcb899 100644 --- a/src/main/java/com/google/gerrit/client/Gerrit.java +++ b/src/main/java/com/google/gerrit/client/Gerrit.java @@ -351,43 +351,39 @@ public class Gerrit implements EntryPoint { if (signedIn) { whoAmI(); addLink(menuRight, C.menuSettings(), Link.SETTINGS); - boolean signout = false; switch (Common.getGerritConfig().getLoginType()) { case HTTP: break; case OPENID: - default: - signout = true; + case DEVELOPMENT_BECOME_ANY_ACCOUNT: + menuRight.addItem(C.menuSignOut(), new Command() { + public void execute() { + doSignOut(); + } + }); break; } - if (signout || !GWT.isScript()) { - menuRight.addItem(C.menuSignOut(), new Command() { - public void execute() { - doSignOut(); - } - }); - } } else { switch (Common.getGerritConfig().getLoginType()) { case HTTP: break; case OPENID: - default: menuRight.addItem(C.menuSignIn(), new Command() { public void execute() { doSignIn(); } }); break; - } - if (!GWT.isScript()) { - menuRight.addItem("Become", new Command() { - public void execute() { - Window.Location.assign(GWT.getHostPageBaseURL() + "become"); - } - }); + + case DEVELOPMENT_BECOME_ANY_ACCOUNT: + menuRight.addItem("Become", new Command() { + public void execute() { + Window.Location.assign(GWT.getHostPageBaseURL() + "become"); + } + }); + break; } } } diff --git a/src/main/java/com/google/gerrit/client/data/GerritConfig.java b/src/main/java/com/google/gerrit/client/data/GerritConfig.java index f3414c277b..4920317c6a 100644 --- a/src/main/java/com/google/gerrit/client/data/GerritConfig.java +++ b/src/main/java/com/google/gerrit/client/data/GerritConfig.java @@ -15,7 +15,7 @@ package com.google.gerrit.client.data; import com.google.gerrit.client.reviewdb.ApprovalCategory; -import com.google.gerrit.client.reviewdb.SystemConfig; +import com.google.gerrit.client.reviewdb.LoginType; import java.util.ArrayList; import java.util.HashMap; @@ -30,7 +30,7 @@ public class GerritConfig implements Cloneable { protected boolean useContributorAgreements; protected boolean useContactInfo; protected boolean allowRegisterNewEmail; - protected SystemConfig.LoginType loginType; + protected LoginType loginType; protected boolean useRepoDownload; protected String gitDaemonUrl; protected String sshdAddress; @@ -47,11 +47,11 @@ public class GerritConfig implements Cloneable { canonicalUrl = u; } - public SystemConfig.LoginType getLoginType() { + public LoginType getLoginType() { return loginType; } - public void setLoginType(final SystemConfig.LoginType t) { + public void setLoginType(final LoginType t) { loginType = t; } diff --git a/src/main/java/com/google/gerrit/client/reviewdb/LoginType.java b/src/main/java/com/google/gerrit/client/reviewdb/LoginType.java new file mode 100644 index 0000000000..ca69b956a9 --- /dev/null +++ b/src/main/java/com/google/gerrit/client/reviewdb/LoginType.java @@ -0,0 +1,32 @@ +// Copyright (C) 2009 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.google.gerrit.client.reviewdb; + +public enum LoginType { + /** Login relies upon the OpenID standard: {@link "http://openid.net/"} */ + OPENID, + + /** + * Login relies upon the container/web server security. + *
+ * The container or web server must populate an HTTP header with the some + * user token. Gerrit will implicitly trust the value of this header to + * supply the unique identity. + */ + HTTP, + + /** Development mode to enable becoming anyone you want. */ + DEVELOPMENT_BECOME_ANY_ACCOUNT; +} diff --git a/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java b/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java index 077bcef9ad..919dc5a5f4 100644 --- a/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java +++ b/src/main/java/com/google/gerrit/client/reviewdb/SystemConfig.java @@ -42,20 +42,6 @@ public final class SystemConfig { } } - public static enum LoginType { - /** Login relies upon the OpenID standard: {@link "http://openid.net/"} */ - OPENID, - - /** - * Login relies upon the container/web server security. - *
- * The container or web server must populate an HTTP header with the some
- * user token. Gerrit will implicitly trust the value of this header to
- * supply the unique identity.
- */
- HTTP;
- }
-
/** Construct a new, unconfigured instance. */
public static SystemConfig create() {
final SystemConfig r = new SystemConfig();
diff --git a/src/main/java/com/google/gerrit/server/config/AuthConfig.java b/src/main/java/com/google/gerrit/server/config/AuthConfig.java
index 974e3c1701..2baa063dff 100644
--- a/src/main/java/com/google/gerrit/server/config/AuthConfig.java
+++ b/src/main/java/com/google/gerrit/server/config/AuthConfig.java
@@ -14,8 +14,8 @@
package com.google.gerrit.server.config;
+import com.google.gerrit.client.reviewdb.LoginType;
import com.google.gerrit.client.reviewdb.SystemConfig;
-import com.google.gerrit.client.reviewdb.SystemConfig.LoginType;
import com.google.gwtjsonrpc.server.SignedToken;
import com.google.gwtjsonrpc.server.XsrfException;
import com.google.inject.Inject;
@@ -64,6 +64,9 @@ public class AuthConfig {
}
private static LoginType toType(final Config cfg) {
+ if (isBecomeAnyoneEnabled()) {
+ return LoginType.DEVELOPMENT_BECOME_ANY_ACCOUNT;
+ }
String type = cfg.getString("auth", null, "type");
if (type == null) {
return LoginType.OPENID;
@@ -76,6 +79,15 @@ public class AuthConfig {
throw new IllegalStateException("Unsupported auth.type: " + type);
}
+ private static boolean isBecomeAnyoneEnabled() {
+ try {
+ String s = "com.google.gerrit.server.http.BecomeAnyAccountLoginServlet";
+ return Boolean.getBoolean(s);
+ } catch (SecurityException se) {
+ return false;
+ }
+ }
+
/** Type of user authentication used by this Gerrit server. */
public LoginType getLoginType() {
return loginType;
diff --git a/src/main/java/com/google/gerrit/server/config/CacheManagerProvider.java b/src/main/java/com/google/gerrit/server/config/CacheManagerProvider.java
index 8408865b65..bfe15d05c8 100644
--- a/src/main/java/com/google/gerrit/server/config/CacheManagerProvider.java
+++ b/src/main/java/com/google/gerrit/server/config/CacheManagerProvider.java
@@ -1,6 +1,6 @@
package com.google.gerrit.server.config;
-import com.google.gerrit.client.reviewdb.SystemConfig.LoginType;
+import com.google.gerrit.client.reviewdb.LoginType;
import com.google.inject.Inject;
import com.google.inject.Provider;
diff --git a/src/main/java/com/google/gerrit/server/http/BecomeAnyAccountLoginServlet.java b/src/main/java/com/google/gerrit/server/http/BecomeAnyAccountLoginServlet.java
index 3ad1b30be7..61df3e5715 100644
--- a/src/main/java/com/google/gerrit/server/http/BecomeAnyAccountLoginServlet.java
+++ b/src/main/java/com/google/gerrit/server/http/BecomeAnyAccountLoginServlet.java
@@ -16,6 +16,8 @@ package com.google.gerrit.server.http;
import com.google.gerrit.client.reviewdb.Account;
import com.google.gerrit.client.reviewdb.ReviewDb;
+import com.google.gerrit.server.config.CanonicalWebUrl;
+import com.google.gerrit.server.config.Nullable;
import com.google.gwtorm.client.OrmException;
import com.google.gwtorm.client.SchemaFactory;
import com.google.inject.Inject;
@@ -34,24 +36,17 @@ import javax.servlet.http.HttpServletResponse;
@SuppressWarnings("serial")
@Singleton
public class BecomeAnyAccountLoginServlet extends HttpServlet {
- static boolean isAllowed() {
- try {
- return Boolean.getBoolean(BecomeAnyAccountLoginServlet.class.getName());
- } catch (SecurityException se) {
- return false;
- }
- }
-
- private final boolean allowed;
private final SchemaFactory