mirror of
https://github.com/bitwarden/server.git
synced 2025-06-30 07:36:14 -05:00
Use all organization memberships for LaunchDarkly user context, better separate context kinds (#2807)
* Use all organization memberships for LaunchDarkly context * Use simpler null check Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Remove unnecessary interpolation Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Remove unnecessary interpolation Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com> * Fully spell out organizations * Use client type for context separation decisions --------- Co-authored-by: Oscar Hinton <Hinton@users.noreply.github.com>
This commit is contained in:
@ -104,18 +104,42 @@ public class LaunchDarklyFeatureService : IFeatureService, IDisposable
|
||||
{
|
||||
var builder = LaunchDarkly.Sdk.Context.MultiBuilder();
|
||||
|
||||
if (currentContext.UserId.HasValue)
|
||||
switch (currentContext.ClientType)
|
||||
{
|
||||
var user = LaunchDarkly.Sdk.Context.Builder(currentContext.UserId.Value.ToString());
|
||||
user.Kind(LaunchDarkly.Sdk.ContextKind.Default);
|
||||
builder.Add(user.Build());
|
||||
}
|
||||
case Identity.ClientType.User:
|
||||
{
|
||||
var ldUser = LaunchDarkly.Sdk.Context.Builder(currentContext.UserId.Value.ToString());
|
||||
ldUser.Kind(LaunchDarkly.Sdk.ContextKind.Default);
|
||||
|
||||
if (currentContext.OrganizationId.HasValue)
|
||||
{
|
||||
var org = LaunchDarkly.Sdk.Context.Builder(currentContext.OrganizationId.Value.ToString());
|
||||
org.Kind("org");
|
||||
builder.Add(org.Build());
|
||||
if (currentContext.Organizations?.Any() ?? false)
|
||||
{
|
||||
var ldOrgs = currentContext.Organizations.Select(o => LaunchDarkly.Sdk.LdValue.Of(o.Id.ToString()));
|
||||
ldUser.Set("organizations", LaunchDarkly.Sdk.LdValue.ArrayFrom(ldOrgs));
|
||||
}
|
||||
|
||||
builder.Add(ldUser.Build());
|
||||
}
|
||||
break;
|
||||
|
||||
case Identity.ClientType.Organization:
|
||||
{
|
||||
var ldOrg = LaunchDarkly.Sdk.Context.Builder(currentContext.OrganizationId.Value.ToString());
|
||||
ldOrg.Kind("organization");
|
||||
builder.Add(ldOrg.Build());
|
||||
}
|
||||
break;
|
||||
|
||||
case Identity.ClientType.ServiceAccount:
|
||||
{
|
||||
var ldServiceAccount = LaunchDarkly.Sdk.Context.Builder(currentContext.UserId.Value.ToString());
|
||||
ldServiceAccount.Kind("service-account");
|
||||
builder.Add(ldServiceAccount.Build());
|
||||
|
||||
var ldOrg = LaunchDarkly.Sdk.Context.Builder(currentContext.OrganizationId.Value.ToString());
|
||||
ldOrg.Kind("organization");
|
||||
builder.Add(ldOrg.Build());
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return builder.Build();
|
||||
|
Reference in New Issue
Block a user