summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorandreer <andreer@verizonmedia.com>2020-05-29 11:53:40 +0200
committerandreer <andreer@verizonmedia.com>2020-05-29 11:53:40 +0200
commit3cffe31a29ab7e586e650f01a173208ab34477f8 (patch)
tree12f981dd7755c71301aa6662a36fa30598cf6236
parentbf3d67a911a99f6351edb6f0d3a6cdf01c673a0d (diff)
add feature flag to user api for use in console
-rw-r--r--controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java12
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java5
-rw-r--r--flags/src/main/java/com/yahoo/vespa/flags/Flags.java8
3 files changed, 23 insertions, 2 deletions
diff --git a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
index 006a12a23b5..9fc77e7653d 100644
--- a/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
+++ b/controller-server/src/main/java/com/yahoo/vespa/hosted/controller/restapi/user/UserApiHandler.java
@@ -18,6 +18,10 @@ import com.yahoo.slime.Inspector;
import com.yahoo.slime.Slime;
import com.yahoo.slime.SlimeStream;
import com.yahoo.slime.SlimeUtils;
+import com.yahoo.vespa.flags.BooleanFlag;
+import com.yahoo.vespa.flags.FetchVector;
+import com.yahoo.vespa.flags.FlagSource;
+import com.yahoo.vespa.flags.Flags;
import com.yahoo.vespa.hosted.controller.Controller;
import com.yahoo.vespa.hosted.controller.LockedTenant;
import com.yahoo.vespa.hosted.controller.api.integration.user.Roles;
@@ -60,12 +64,14 @@ public class UserApiHandler extends LoggingRequestHandler {
private final UserManagement users;
private final Controller controller;
+ private final BooleanFlag enable_public_signup_flow;
@Inject
- public UserApiHandler(Context parentCtx, UserManagement users, Controller controller) {
+ public UserApiHandler(Context parentCtx, UserManagement users, Controller controller, FlagSource flagSource) {
super(parentCtx);
this.users = users;
this.controller = controller;
+ this.enable_public_signup_flow = Flags.ENABLE_PUBLIC_SIGNUP_FLOW.bindTo(flagSource);
}
@Override
@@ -149,6 +155,10 @@ public class UserApiHandler extends LoggingRequestHandler {
root.setBool("isPublic", controller.system().isPublic());
root.setBool("isCd", controller.system().isCd());
+ if(enable_public_signup_flow.with(FetchVector.Dimension.CONSOLE_USER_EMAIL, user.email()).value()) {
+ root.setBool(enable_public_signup_flow.id().toString(), true);
+ }
+
toSlime(root.setObject("user"), user);
Cursor tenants = root.setObject("tenants");
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
index 5897a5ab58b..02adfd1a14b 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/FetchVector.java
@@ -57,7 +57,10 @@ public class FetchVector {
* <p>NOTE: There is seldom any need to set ZONE_ID, as all flags are set per zone anyways. The controller
* could PERHAPS use this where it handles multiple zones.
*/
- ZONE_ID
+ ZONE_ID,
+
+ /** Email address of user - provided by auth0 in console. */
+ CONSOLE_USER_EMAIL
}
private final Map<Dimension, String> map;
diff --git a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
index 386a169acb0..552878de68a 100644
--- a/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
+++ b/flags/src/main/java/com/yahoo/vespa/flags/Flags.java
@@ -10,6 +10,7 @@ import java.util.Optional;
import java.util.TreeMap;
import static com.yahoo.vespa.flags.FetchVector.Dimension.APPLICATION_ID;
+import static com.yahoo.vespa.flags.FetchVector.Dimension.CONSOLE_USER_EMAIL;
import static com.yahoo.vespa.flags.FetchVector.Dimension.HOSTNAME;
import static com.yahoo.vespa.flags.FetchVector.Dimension.NODE_TYPE;
import static com.yahoo.vespa.flags.FetchVector.Dimension.VESPA_VERSION;
@@ -283,6 +284,13 @@ public class Flags {
"Takes effect immediately on new hosts, on next redeploy for applications",
APPLICATION_ID);
+ public static final UnboundBooleanFlag ENABLE_PUBLIC_SIGNUP_FLOW = defineFeatureFlag(
+ "enable-public-signup-flow", false,
+ "Show the public signup flow for a user in the console",
+ "takes effect on browser reload of api/user/v1/user",
+ CONSOLE_USER_EMAIL
+ );
+
/** WARNING: public for testing: All flags should be defined in {@link Flags}. */
public static UnboundBooleanFlag defineFeatureFlag(String flagId, boolean defaultValue, String description,
String modificationEffect, FetchVector.Dimension... dimensions) {