@@ -246,9 +246,13 @@ public Mono<Boolean> enableAuthConfig(AuthConfigRequest authConfigRequest) {
246246 .then (sessionUserService .getVisitorOrgMemberCache ())
247247 .flatMap (orgMember -> organizationService .getById (orgMember .getOrgId ()))
248248 .doOnNext (organization -> {
249- boolean duplicateAuthType = addOrUpdateNewAuthConfig (organization , authConfigFactory .build (authConfigRequest , true ));
250- if (duplicateAuthType ) {
251- deferredError (DUPLICATE_AUTH_CONFIG_ADDITION , "DUPLICATE_AUTH_CONFIG_ADDITION" );
249+ if (authConfigRequest .getId ().equals ("EMAIL" )) {
250+ organization .setIsEmailDisabled (false );
251+ } else {
252+ boolean duplicateAuthType = addOrUpdateNewAuthConfig (organization , authConfigFactory .build (authConfigRequest , true ));
253+ if (duplicateAuthType ) {
254+ deferredError (DUPLICATE_AUTH_CONFIG_ADDITION , "DUPLICATE_AUTH_CONFIG_ADDITION" );
255+ }
252256 }
253257 })
254258 .flatMap (organization -> organizationService .update (organization .getId (), organization ));
@@ -346,22 +350,15 @@ private Mono<Void> checkIfAdmin() {
346350 * If true, throw an exception to avoid disabling the last effective connection way.
347351 */
348352 private Mono <Void > checkIfOnlyEffectiveCurrentUserConnections (String authId ) {
349- Mono <List <String >> userConnectionAuthConfigIdListMono = sessionUserService .getVisitor ()
350- .flatMapIterable (User ::getConnections )
351- .filter (connection -> StringUtils .isNotBlank (connection .getAuthId ()))
352- .map (Connection ::getAuthId )
353- .collectList ();
354- Mono <List <String >> orgAuthIdListMono = authenticationService .findAllAuthConfigs (null , true )
355- .map (FindAuthConfig ::authConfig )
356- .map (AbstractAuthConfig ::getId )
357- .collectList ();
358- return Mono .zip (userConnectionAuthConfigIdListMono , orgAuthIdListMono )
359- .delayUntil (tuple -> {
360- List <String > userConnectionAuthConfigIds = tuple .getT1 ();
361- List <String > orgAuthConfigIds = tuple .getT2 ();
362- userConnectionAuthConfigIds .retainAll (orgAuthConfigIds );
363- userConnectionAuthConfigIds .remove (authId );
364- if (CollectionUtils .isEmpty (userConnectionAuthConfigIds )) {
353+ return sessionUserService .getVisitorOrgMemberCache ()
354+ .map (OrgMember ::getOrgId )
355+ .flatMap (orgId -> authenticationService .findAllAuthConfigs (orgId , true )
356+ .map (FindAuthConfig ::authConfig )
357+ .map (AbstractAuthConfig ::getId )
358+ .collectList ())
359+ .delayUntil (orgAuthConfigIds -> {
360+ orgAuthConfigIds .remove (authId );
361+ if (CollectionUtils .isEmpty (orgAuthConfigIds )) {
365362 return Mono .error (new BizException (DISABLE_AUTH_CONFIG_FORBIDDEN , "DISABLE_AUTH_CONFIG_FORBIDDEN" ));
366363 }
367364 return Mono .empty ();
@@ -370,26 +367,29 @@ private Mono<Void> checkIfOnlyEffectiveCurrentUserConnections(String authId) {
370367 }
371368
372369 private void disableAuthConfig (Organization organization , String authId , boolean delete ) {
373-
374- Predicate <AbstractAuthConfig > authConfigPredicate = abstractAuthConfig -> Objects .equals (abstractAuthConfig .getId (), authId );
375-
376- if (delete ) {
377- List <AbstractAuthConfig > abstractAuthConfigs = Optional .of (organization )
378- .map (Organization ::getAuthConfigs )
379- .orElse (Collections .emptyList ());
380-
381- abstractAuthConfigs .removeIf (authConfigPredicate );
382-
383- organization .getOrganizationDomain ().setConfigs (abstractAuthConfigs );
384-
370+ if (authId .equals ("EMAIL" )) {
371+ organization .setIsEmailDisabled (true );
385372 } else {
386- Optional .of (organization )
387- .map (Organization ::getAuthConfigs )
388- .orElse (Collections .emptyList ()).stream ()
389- .filter (authConfigPredicate )
390- .forEach (abstractAuthConfig -> {
391- abstractAuthConfig .setEnable (false );
392- });
373+ Predicate <AbstractAuthConfig > authConfigPredicate = abstractAuthConfig -> Objects .equals (abstractAuthConfig .getId (), authId );
374+
375+ if (delete ) {
376+ List <AbstractAuthConfig > abstractAuthConfigs = Optional .of (organization )
377+ .map (Organization ::getAuthConfigs )
378+ .orElse (Collections .emptyList ());
379+
380+ abstractAuthConfigs .removeIf (authConfigPredicate );
381+
382+ organization .getOrganizationDomain ().setConfigs (abstractAuthConfigs );
383+
384+ } else {
385+ Optional .of (organization )
386+ .map (Organization ::getAuthConfigs )
387+ .orElse (Collections .emptyList ()).stream ()
388+ .filter (authConfigPredicate )
389+ .forEach (abstractAuthConfig -> {
390+ abstractAuthConfig .setEnable (false );
391+ });
392+ }
393393 }
394394 }
395395
0 commit comments