Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. Weโ€™ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Drop LimitCollectionCreationDeletion from the database #4810

Draft
wants to merge 17 commits into
base: ac/addison/pm-10863/remove-feature-toggle
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -1,4 +1,6 @@
๏ปฟ@model OrganizationViewModel
@inject Bit.Core.Services.IFeatureService FeatureService
@model OrganizationViewModel

<dl class="row">
<dt class="col-sm-4 col-lg-3">Id</dt>
<dd id="org-id" class="col-sm-8 col-lg-9"><code>@Model.Organization.Id</code></dd>
Expand Down Expand Up @@ -54,7 +56,10 @@
<dd id="pm-manage-collections" class="col-sm-8 col-lg-9">@(Model.Organization.AllowAdminAccessToAllCollectionItems ? "On" : "Off")</dd>

<dt class="col-sm-4 col-lg-3">Limit collection creation to administrators</dt>
<dd id="pm-collection-creation" class="col-sm-8 col-lg-9">@(Model.Organization.LimitCollectionCreationDeletion ? "On" : "Off")</dd>
<dd id="pm-collection-creation" class="col-sm-8 col-lg-9">@(Model.Organization.LimitCollectionCreation ? "On" : "Off")</dd>

<dt class="col-sm-4 col-lg-3">Limit collection deletion to administrators</dt>
<dd id="pm-collection-deletion" class="col-sm-8 col-lg-9">@(Model.Organization.LimitCollectionDeletion ? "On" : "Off")</dd>
</dl>

<h2>Secrets Manager</h2>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -514,7 +514,6 @@ public async Task<OrganizationSsoResponseModel> PostSso(Guid id, [FromBody] Orga
}

[HttpPut("{id}/collection-management")]
[SelfHosted(NotSelfHostedOnly = true)]
public async Task<OrganizationResponseModel> PutCollectionManagement(Guid id, [FromBody] OrganizationCollectionManagementUpdateRequestModel model)
{
var organization = await _organizationRepository.GetByIdAsync(id);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,8 @@ public OrganizationResponseModel(Organization organization, string obj = "organi
SmServiceAccounts = organization.SmServiceAccounts;
MaxAutoscaleSmSeats = organization.MaxAutoscaleSmSeats;
MaxAutoscaleSmServiceAccounts = organization.MaxAutoscaleSmServiceAccounts;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
LimitCollectionCreation = organization.LimitCollectionCreation;
LimitCollectionDeletion = organization.LimitCollectionDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
}

Expand Down Expand Up @@ -98,7 +99,8 @@ public OrganizationResponseModel(Organization organization, string obj = "organi
public int? SmServiceAccounts { get; set; }
public int? MaxAutoscaleSmSeats { get; set; }
public int? MaxAutoscaleSmServiceAccounts { get; set; }
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,8 @@ public ProfileOrganizationResponseModel(OrganizationUserOrganizationDetails orga
FamilySponsorshipToDelete = organization.FamilySponsorshipToDelete;
FamilySponsorshipValidUntil = organization.FamilySponsorshipValidUntil;
AccessSecretsManager = organization.AccessSecretsManager;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
LimitCollectionCreation = organization.LimitCollectionCreation;
LimitCollectionDeletion = organization.LimitCollectionDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;

if (organization.SsoConfig != null)
Expand Down Expand Up @@ -120,6 +121,7 @@ public ProfileOrganizationResponseModel(OrganizationUserOrganizationDetails orga
public DateTime? FamilySponsorshipValidUntil { get; set; }
public bool? FamilySponsorshipToDelete { get; set; }
public bool AccessSecretsManager { get; set; }
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,8 @@ public ProfileProviderOrganizationResponseModel(ProviderUserOrganizationDetails
ProviderId = organization.ProviderId;
ProviderName = organization.ProviderName;
ProductTierType = StaticStore.GetPlan(organization.PlanType).ProductTier;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
LimitCollectionCreation = organization.LimitCollectionCreation;
LimitCollectionDeletion = organization.LimitCollectionDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,14 @@ namespace Bit.Api.Models.Request.Organizations;

public class OrganizationCollectionManagementUpdateRequestModel
{
public bool LimitCreateDeleteOwnerAdmin { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }

public virtual Organization ToOrganization(Organization existingOrganization)
{
existingOrganization.LimitCollectionCreationDeletion = LimitCreateDeleteOwnerAdmin;
existingOrganization.LimitCollectionCreation = LimitCollectionCreation;
existingOrganization.LimitCollectionDeletion = LimitCollectionDeletion;
existingOrganization.AllowAdminAccessToAllCollectionItems = AllowAdminAccessToAllCollectionItems;
return existingOrganization;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ protected override async Task HandleRequirementAsync(AuthorizationHandlerContext
break;

case null:
// requirement isn't actually nullable but since we use the
// requirement isn't actually nullable but since we use the
// not null when trick it makes the compiler think that requirement
// could actually be nullable.
throw new UnreachableException();
Expand All @@ -123,8 +123,12 @@ private async Task<bool> CanCreateAsync(CurrentContextOrganization? org)
return true;
}

var organizationAbility = await GetOrganizationAbilityAsync(org);

var limitCollectionCreationEnabled = !(organizationAbility is { LimitCollectionCreation: false });

// If the limit collection management setting is disabled, allow any user to create collections
if (await GetOrganizationAbilityAsync(org) is { LimitCollectionCreationDeletion: false })
if (!limitCollectionCreationEnabled)
{
return true;
}
Expand Down Expand Up @@ -246,18 +250,23 @@ private async Task<bool> CanDeleteAsync(ICollection<Collection> resources, Curre
return true;
}

// If AllowAdminAccessToAllCollectionItems is true, Owners and Admins can delete any collection, regardless of LimitCollectionCreationDeletion setting
// If AllowAdminAccessToAllCollectionItems is true, Owners and Admins can delete any collection, regardless of LimitCollectionDeletion setting
if (await AllowAdminAccessToAllCollectionItems(org) && org is { Type: OrganizationUserType.Owner or OrganizationUserType.Admin })
{
return true;
}

// If LimitCollectionCreationDeletion is false, AllowAdminAccessToAllCollectionItems setting is irrelevant.
// If LimitCollectionDeletion is false, AllowAdminAccessToAllCollectionItems setting is irrelevant.
// Ensure acting user has manage permissions for all collections being deleted
// If LimitCollectionCreationDeletion is true, only Owners and Admins can delete collections they manage
// If LimitCollectionDeletion is true, only Owners and Admins can delete collections they manage
var organizationAbility = await GetOrganizationAbilityAsync(org);
var canDeleteManagedCollections = organizationAbility is { LimitCollectionCreationDeletion: false } ||
org is { Type: OrganizationUserType.Owner or OrganizationUserType.Admin };

var limitCollectionDeletionEnabled = !(organizationAbility is { LimitCollectionDeletion: false });

var canDeleteManagedCollections =
!limitCollectionDeletionEnabled ||
org is { Type: OrganizationUserType.Owner or OrganizationUserType.Admin };

if (canDeleteManagedCollections && await CanManageCollectionsAsync(resources, org))
{
return true;
Expand Down
14 changes: 10 additions & 4 deletions src/Core/AdminConsole/Entities/Organization.cs
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
using Bit.Core.Entities;
using Bit.Core.Enums;
using Bit.Core.Models.Business;
using Bit.Core.Services;
using Bit.Core.Tools.Entities;
using Bit.Core.Utilities;

Expand Down Expand Up @@ -93,7 +94,8 @@
/// If set to false, any organization member can create a collection, and any member can delete a collection that
/// they have Can Manage permissions for.
/// </summary>
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }

/// <summary>
/// If set to true, admins, owners, and some custom users can read/write all collections and items in the Admin Console.
Expand Down Expand Up @@ -265,7 +267,7 @@
return providers[provider];
}

public void UpdateFromLicense(OrganizationLicense license)
public void UpdateFromLicense(OrganizationLicense license, IFeatureService featureService)
{
// The following properties are intentionally excluded from being updated:
// - Id - self-hosted org will have its own unique Guid
Expand Down Expand Up @@ -300,7 +302,11 @@
UseSecretsManager = license.UseSecretsManager;
SmSeats = license.SmSeats;
SmServiceAccounts = license.SmServiceAccounts;
LimitCollectionCreationDeletion = license.LimitCollectionCreationDeletion;
AllowAdminAccessToAllCollectionItems = license.AllowAdminAccessToAllCollectionItems;

if (!featureService.IsEnabled(FeatureFlagKeys.LimitCollectionCreationDeletionSplit))
{
LimitCollectionCreationDeletion = license.LimitCollectionCreationDeletion;

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Run validation

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Run tests

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Quality scan

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Quality scan

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Billing, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Identity, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Scim, ./bitwarden_license/src, true)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build MSSQL migrator utility (linux-x64)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Notifications, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Setup, ./util)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build MSSQL migrator utility (win-x64)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Events, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (MsSqlMigratorUtility, ./util, true)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (EventsProcessor, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Sso, ./bitwarden_license/src, true)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Admin, ./src, true)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Api, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build artifacts (Icons, ./src)

The name 'LimitCollectionCreationDeletion' does not exist in the current context

Check failure on line 308 in src/Core/AdminConsole/Entities/Organization.cs

View workflow job for this annotation

GitHub Actions / Build MSSQL migrator utility (osx-x64)

The name 'LimitCollectionCreationDeletion' does not exist in the current context
AllowAdminAccessToAllCollectionItems = license.AllowAdminAccessToAllCollectionItems;
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,8 @@ public OrganizationAbility(Organization organization)
UseResetPassword = organization.UseResetPassword;
UseCustomPermissions = organization.UseCustomPermissions;
UsePolicies = organization.UsePolicies;
LimitCollectionCreationDeletion = organization.LimitCollectionCreationDeletion;
LimitCollectionCreation = organization.LimitCollectionCreation;
LimitCollectionDeletion = organization.LimitCollectionDeletion;
AllowAdminAccessToAllCollectionItems = organization.AllowAdminAccessToAllCollectionItems;
}

Expand All @@ -37,6 +38,7 @@ public OrganizationAbility(Organization organization)
public bool UseResetPassword { get; set; }
public bool UseCustomPermissions { get; set; }
public bool UsePolicies { get; set; }
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ public class OrganizationUserOrganizationDetails
public bool UsePasswordManager { get; set; }
public int? SmSeats { get; set; }
public int? SmServiceAccounts { get; set; }
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,8 @@ public Organization ToOrganization()
RevisionDate = RevisionDate,
MaxAutoscaleSeats = MaxAutoscaleSeats,
OwnersNotifiedOfAutoscaling = OwnersNotifiedOfAutoscaling,
LimitCollectionCreationDeletion = LimitCollectionCreationDeletion,
LimitCollectionCreation = LimitCollectionCreation,
LimitCollectionDeletion = LimitCollectionDeletion,
AllowAdminAccessToAllCollectionItems = AllowAdminAccessToAllCollectionItems,
Status = Status
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ public class ProviderUserOrganizationDetails
[JsonConverter(typeof(HtmlEncodingStringConverter))]
public string ProviderName { get; set; }
public PlanType PlanType { get; set; }
public bool LimitCollectionCreationDeletion { get; set; }
public bool LimitCollectionCreation { get; set; }
public bool LimitCollectionDeletion { get; set; }
public bool AllowAdminAccessToAllCollectionItems { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -705,8 +705,6 @@ private async Task ValidateSignUpPoliciesAsync(Guid ownerId)
UseSecretsManager = license.UseSecretsManager,
SmSeats = license.SmSeats,
SmServiceAccounts = license.SmServiceAccounts,
LimitCollectionCreationDeletion = license.LimitCollectionCreationDeletion,
AllowAdminAccessToAllCollectionItems = license.AllowAdminAccessToAllCollectionItems,
};

var result = await SignUpAsync(organization, owner.Id, ownerKey, collectionName, false);
Expand Down
2 changes: 2 additions & 0 deletions src/Core/Constants.cs
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ public static class FeatureFlagKeys
public const string TrialPayment = "PM-8163-trial-payment";
public const string Pm3478RefactorOrganizationUserApi = "pm-3478-refactor-organizationuser-api";
public const string RemoveServerVersionHeader = "remove-server-version-header";
public const string LimitCollectionCreationDeletionSplit = "pm-10863-limit-collection-creation-deletion-split";

public static List<string> GetAllKeys()
{
Expand All @@ -161,6 +162,7 @@ public static Dictionary<string, string> GetLocalOverrideFlagValues()
{ DuoRedirect, "true" },
{ BulkDeviceApproval, "true" },
{ CipherKeyEncryption, "true" },
{ LimitCollectionCreationDeletionSplit, "true" },
};
}
}
24 changes: 17 additions & 7 deletions src/Core/Models/Business/OrganizationLicense.cs
Original file line number Diff line number Diff line change
Expand Up @@ -53,8 +53,6 @@ public OrganizationLicense(Organization org, SubscriptionInfo subscriptionInfo,
UseSecretsManager = org.UseSecretsManager;
SmSeats = org.SmSeats;
SmServiceAccounts = org.SmServiceAccounts;
LimitCollectionCreationDeletion = org.LimitCollectionCreationDeletion;
AllowAdminAccessToAllCollectionItems = org.AllowAdminAccessToAllCollectionItems;

if (subscriptionInfo?.Subscription == null)
{
Expand Down Expand Up @@ -138,8 +136,12 @@ public OrganizationLicense(Organization org, SubscriptionInfo subscriptionInfo,
public bool UseSecretsManager { get; set; }
public int? SmSeats { get; set; }
public int? SmServiceAccounts { get; set; }

// Deprecated. Left for backwards compatibility with old license versions.
public bool LimitCollectionCreationDeletion { get; set; } = true;
public bool AllowAdminAccessToAllCollectionItems { get; set; } = true;
//

public bool Trial { get; set; }
public LicenseType? LicenseType { get; set; }
public string Hash { get; set; }
Expand All @@ -150,7 +152,14 @@ public OrganizationLicense(Organization org, SubscriptionInfo subscriptionInfo,
/// Represents the current version of the license format. Should be updated whenever new fields are added.
/// </summary>
/// <remarks>Intentionally set one version behind to allow self hosted users some time to update before
/// getting out of date license errors</remarks>
/// getting out of date license errors
/// </remarks>
/// <remarks>
/// โš  This is important! We are on this license version because of new
/// properties that were added for versions 14 and 15. These properties
/// were later removed! When you increment to version 16 please delete
/// this comment.
/// </remarks>
public const int CurrentLicenseFileVersion = 14;
private bool ValidLicenseVersion
{
Expand Down Expand Up @@ -368,10 +377,11 @@ to the Organization object. It's validated as part of the hash but does not need
}

/*
* Version 14 added LimitCollectionCreationDeletion and Version 15 added AllowAdminAccessToAllCollectionItems,
* however these are just user settings and it is not worth failing validation if they mismatch.
* They are intentionally excluded.
*/
* Version 14 added LimitCollectionCreationDeletion and Version
* 15 added AllowAdminAccessToAllCollectionItems, however they
* are no longer used and are intentionally excluded from
* validation.
*/

return valid;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,18 @@ public class UpdateOrganizationLicenseCommand : IUpdateOrganizationLicenseComman
private readonly ILicensingService _licensingService;
private readonly IGlobalSettings _globalSettings;
private readonly IOrganizationService _organizationService;
private readonly IFeatureService _featureService;

public UpdateOrganizationLicenseCommand(
ILicensingService licensingService,
IGlobalSettings globalSettings,
IOrganizationService organizationService)
IOrganizationService organizationService,
IFeatureService featureService)
{
_licensingService = licensingService;
_globalSettings = globalSettings;
_organizationService = organizationService;
_featureService = featureService;
}

public async Task UpdateLicenseAsync(SelfHostedOrganizationDetails selfHostedOrganization,
Expand Down Expand Up @@ -59,7 +62,8 @@ private async Task WriteLicenseFileAsync(Organization organization, Organization
private async Task UpdateOrganizationAsync(SelfHostedOrganizationDetails selfHostedOrganizationDetails, OrganizationLicense license)
{
var organization = selfHostedOrganizationDetails.ToOrganization();
organization.UpdateFromLicense(license);

organization.UpdateFromLicense(license, _featureService);

await _organizationService.ReplaceAndUpdateCacheAsync(organization);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@ namespace Bit.Infrastructure.EntityFramework.AdminConsole.Models;

public class Organization : Core.AdminConsole.Entities.Organization
{
// Shadow properties - to be introduced by https://bitwarden.atlassian.net/browse/PM-10863
public bool LimitCollectionCreation { get => LimitCollectionCreationDeletion; set => LimitCollectionCreationDeletion = value; }
public bool LimitCollectionDeletion { get => LimitCollectionCreationDeletion; set => LimitCollectionCreationDeletion = value; }

public virtual ICollection<Cipher> Ciphers { get; set; }
public virtual ICollection<OrganizationUser> OrganizationUsers { get; set; }
public virtual ICollection<Group> Groups { get; set; }
Expand Down Expand Up @@ -42,9 +38,6 @@ public OrganizationMapperProfile()
.ForMember(org => org.ApiKeys, opt => opt.Ignore())
.ForMember(org => org.Connections, opt => opt.Ignore())
.ForMember(org => org.Domains, opt => opt.Ignore())
// Shadow properties - to be introduced by https://bitwarden.atlassian.net/browse/PM-10863
.ForMember(org => org.LimitCollectionCreation, opt => opt.Ignore())
.ForMember(org => org.LimitCollectionDeletion, opt => opt.Ignore())
.ReverseMap();

CreateProjection<Organization, SelfHostedOrganizationDetails>()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,8 @@ public async Task<ICollection<OrganizationAbility>> GetManyAbilitiesAsync()
UseScim = e.UseScim,
UseCustomPermissions = e.UseCustomPermissions,
UsePolicies = e.UsePolicies,
LimitCollectionCreationDeletion = e.LimitCollectionCreationDeletion,
LimitCollectionCreation = e.LimitCollectionCreation,
LimitCollectionDeletion = e.LimitCollectionDeletion,
AllowAdminAccessToAllCollectionItems = e.AllowAdminAccessToAllCollectionItems
}).ToListAsync();
}
Expand Down
Loading
Loading