This is an automated email from the ASF dual-hosted git repository.

harikrishna pushed a commit to branch 2FA
in repository https://gitbox.apache.org/repos/asf/cloudstack.git

commit 2b5b95b841c0407cb315605d164b95311967a3c8
Author: Harikrishna Patnala <harikrishna.patn...@gmail.com>
AuthorDate: Sun Nov 27 23:11:17 2022 +0530

    Refactored code
---
 .../java/com/cloud/user/AccountManagerImpl.java    | 57 +++++++++++++---------
 1 file changed, 35 insertions(+), 22 deletions(-)

diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java 
b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
index b6483c20fa2..1ab05cfaa00 100644
--- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
@@ -3200,38 +3200,50 @@ public class AccountManagerImpl extends ManagerBase 
implements AccountManager, M
         Account caller = CallContext.current().getCallingAccount();
         Account owner = _accountService.getActiveAccountById(caller.getId());
 
-        UserTwoFactorAuthenticationSetupResponse response = new 
UserTwoFactorAuthenticationSetupResponse();
         if (cmd.getEnable()) {
             checkAccess(caller, null, true, owner);
             Long userId = CallContext.current().getCallingUserId();
-            UserAccountVO userAccount = _userAccountDao.findById(userId);
-            UserVO userVO = _userDao.findById(userId);
 
-            if 
(!enableUserTwoFactorAuthentication.valueIn(userAccount.getDomainId())) {
-                throw new CloudRuntimeException("2FA is not enabled for this 
domain or at global level");
-            }
+            UserTwoFactorAuthenticationSetupResponse response = 
enableTwoFactorAuthentication(userId, providerName);
+            return response;
+        }
 
-            if (StringUtils.isEmpty(providerName)) {
-                throw new InvalidParameterValueException("Provider name is 
mandatory to setup 2FA");
-            }
-            UserTwoFactorAuthenticator provider = 
getUserTwoFactorAuthenticationProvider(providerName);
-            String code = provider.setup2FAKey(userAccount);
-            UserVO user = _userDao.createForUpdate();
-            user.setKeyFor2fa(code);
-            user.setUser2faProvider(provider.getName());
-            user.setTwoFactorAuthenticationEnabled(true);
-            _userDao.update(userId, user);
+        // Admin can disable 2FA of the users
+        Long userId = cmd.getUserId();
+        UserTwoFactorAuthenticationSetupResponse response = 
disableTwoFactorAuthentication(userId, caller, owner);
+
+        return response;
+    }
 
-            response.setId(userVO.getUuid());
-            response.setUsername(userAccount.getUsername());
-            response.setSecretCode(code);
+    private UserTwoFactorAuthenticationSetupResponse 
enableTwoFactorAuthentication(Long userId, String providerName) {
+        UserAccountVO userAccount = _userAccountDao.findById(userId);
+        UserVO userVO = _userDao.findById(userId);
 
-            return response;
+        if 
(!enableUserTwoFactorAuthentication.valueIn(userAccount.getDomainId())) {
+            throw new CloudRuntimeException("2FA is not enabled for this 
domain or at global level");
         }
 
-        // Admin can disable 2FA of the users
+        if (StringUtils.isEmpty(providerName)) {
+            throw new InvalidParameterValueException("Provider name is 
mandatory to setup 2FA");
+        }
+        UserTwoFactorAuthenticator provider = 
getUserTwoFactorAuthenticationProvider(providerName);
+        String code = provider.setup2FAKey(userAccount);
+        UserVO user = _userDao.createForUpdate();
+        user.setKeyFor2fa(code);
+        user.setUser2faProvider(provider.getName());
+        user.setTwoFactorAuthenticationEnabled(true);
+        _userDao.update(userId, user);
+
+        UserTwoFactorAuthenticationSetupResponse response = new 
UserTwoFactorAuthenticationSetupResponse();
+        response.setId(userVO.getUuid());
+        response.setUsername(userAccount.getUsername());
+        response.setSecretCode(code);
+
+        return response;
+    }
+
+    private UserTwoFactorAuthenticationSetupResponse 
disableTwoFactorAuthentication(Long userId, Account caller, Account owner) {
         UserVO userVO = null;
-        Long userId = cmd.getUserId();
         if (userId != null) {
             userVO = validateUser(userId, caller.getDomainId());
             if (userVO == null) {
@@ -3250,6 +3262,7 @@ public class AccountManagerImpl extends ManagerBase 
implements AccountManager, M
         user.setTwoFactorAuthenticationEnabled(false);
         _userDao.update(userVO.getId(), user);
 
+        UserTwoFactorAuthenticationSetupResponse response = new 
UserTwoFactorAuthenticationSetupResponse();
         response.setId(userVO.getUuid());
         response.setUsername(userVO.getUsername());
 

Reply via email to