Skip to content

Commit a9d4dc3

Browse files
committed
Cleaned up validator and fixed up tests.
1 parent a35c789 commit a9d4dc3

File tree

2 files changed

+362
-78
lines changed

2 files changed

+362
-78
lines changed

src/Core/AdminConsole/OrganizationFeatures/OrganizationUsers/AutoConfirmUser/AutomaticallyConfirmOrganizationUsersValidator.cs

Lines changed: 16 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
using Bit.Core.AdminConsole.OrganizationFeatures.OrganizationUsers.DeleteClaimedAccount;
22
using Bit.Core.AdminConsole.OrganizationFeatures.Policies;
33
using Bit.Core.AdminConsole.OrganizationFeatures.Policies.PolicyRequirements;
4+
using Bit.Core.AdminConsole.Utilities.v2;
45
using Bit.Core.AdminConsole.Utilities.v2.Validation;
56
using Bit.Core.Auth.UserFeatures.TwoFactorAuth.Interfaces;
67
using Bit.Core.Enums;
@@ -54,10 +55,12 @@ public async Task<ValidationResult<AutomaticallyConfirmOrganizationUserValidatio
5455
return Invalid(request, new UserDoesNotHaveTwoFactorEnabled());
5556
}
5657

57-
// OrgUser must conform to Single Org Policy if applicable
58-
if (!await OrganizationUserConformsToSingleOrgPolicyAsync(request))
58+
// OrgUser must conform to this Single Org Policy
59+
60+
61+
if (await OrganizationUserConformsToSingleOrgPolicyAsync(request) is { } error)
5962
{
60-
return Invalid(request, new OrganizationEnforcesSingleOrgPolicy());
63+
return Invalid(request, error);
6164
}
6265

6366
return Valid(request);
@@ -75,24 +78,30 @@ private async Task<bool> OrganizationUserConformsToTwoFactorRequiredPolicyAsync(
7578
.IsTwoFactorRequiredForOrganization(request.Organization!.Id);
7679
}
7780

78-
private async Task<bool> OrganizationUserConformsToSingleOrgPolicyAsync(AutomaticallyConfirmOrganizationUserValidationRequest request)
81+
private async Task<Error?> OrganizationUserConformsToSingleOrgPolicyAsync(
82+
AutomaticallyConfirmOrganizationUserValidationRequest request)
7983
{
8084
var allOrganizationUsersForUser = await organizationUserRepository
8185
.GetManyByUserAsync(request.OrganizationUser!.UserId!.Value);
8286

8387
if (allOrganizationUsersForUser.Count == 1)
8488
{
85-
return true;
89+
return null;
8690
}
8791

8892
var policyRequirement = await policyRequirementQuery
8993
.GetAsync<SingleOrganizationPolicyRequirement>(request.OrganizationUser!.UserId!.Value);
9094

9195
if (policyRequirement.IsSingleOrgEnabledForThisOrganization(request.Organization!.Id))
9296
{
93-
return false;
97+
return new OrganizationEnforcesSingleOrgPolicy();
98+
}
99+
100+
if (policyRequirement.IsSingleOrgEnabledForOrganizationsOtherThan(request.Organization.Id))
101+
{
102+
return new OtherOrganizationEnforcesSingleOrgPolicy();
94103
}
95104

96-
return !policyRequirement.IsSingleOrgEnabledForOrganizationsOtherThan(request.Organization.Id);
105+
return null;
97106
}
98107
}

0 commit comments

Comments
 (0)