11using Bit . Core . AdminConsole . OrganizationFeatures . OrganizationUsers . DeleteClaimedAccount ;
22using Bit . Core . AdminConsole . OrganizationFeatures . Policies ;
33using Bit . Core . AdminConsole . OrganizationFeatures . Policies . PolicyRequirements ;
4+ using Bit . Core . AdminConsole . Utilities . v2 ;
45using Bit . Core . AdminConsole . Utilities . v2 . Validation ;
56using Bit . Core . Auth . UserFeatures . TwoFactorAuth . Interfaces ;
67using 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