diff options
author | andreer <andreer@verizonmedia.com> | 2020-05-29 11:53:40 +0200 |
---|---|---|
committer | andreer <andreer@verizonmedia.com> | 2020-05-29 11:53:40 +0200 |
commit | 3cffe31a29ab7e586e650f01a173208ab34477f8 (patch) | |
tree | 12f981dd7755c71301aa6662a36fa30598cf6236 | |
parent | bf3d67a911a99f6351edb6f0d3a6cdf01c673a0d (diff) |
add feature flag to user api for use in console
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) { |