You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cloudstack.apache.org by ha...@apache.org on 2022/11/28 05:34:10 UTC

[cloudstack] branch 2FA updated: New parameter in updateUser API to mandate 2FA

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


The following commit(s) were added to refs/heads/2FA by this push:
     new 8d684c236df New parameter in updateUser API to mandate 2FA
8d684c236df is described below

commit 8d684c236dfe0d0e05fab4583d7d893928bfb405
Author: Harikrishna Patnala <ha...@gmail.com>
AuthorDate: Mon Nov 28 11:03:55 2022 +0530

    New parameter in updateUser API to mandate 2FA
---
 api/src/main/java/org/apache/cloudstack/api/ApiConstants.java      | 1 +
 .../apache/cloudstack/api/command/admin/user/UpdateUserCmd.java    | 7 +++++++
 server/src/main/java/com/cloud/user/AccountManagerImpl.java        | 4 ++++
 3 files changed, 12 insertions(+)

diff --git a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
index 71bb1d6252c..39dabd1b778 100644
--- a/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
+++ b/api/src/main/java/org/apache/cloudstack/api/ApiConstants.java
@@ -910,6 +910,7 @@ public class ApiConstants {
     public static final String ANNOTATION_FILTER = "annotationfilter";
     public static final String TWOFACTORAUTHENTICATIONCODE = "2facode";
     public static final String TWOFACTORAUTHENTICATIONPROVIDER = "twofaprovider";
+    public static final String MANDATE_2FA = "mandate2fa";
     public static final String SECRET_CODE = "secretcode";
     public static final String LOGIN = "login";
     public static final String LOGOUT = "logout";
diff --git a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
index 5035b32d14d..59ec9c2f13f 100644
--- a/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
+++ b/api/src/main/java/org/apache/cloudstack/api/command/admin/user/UpdateUserCmd.java
@@ -80,6 +80,9 @@ public class UpdateUserCmd extends BaseCmd {
     @Parameter(name = ApiConstants.USERNAME, type = CommandType.STRING, description = "Unique username")
     private String username;
 
+    @Parameter(name = ApiConstants.MANDATE_2FA, type = CommandType.BOOLEAN, description = "Provide true to mandate the user to use two factor authentication has to be enabled. This parameter is only used to mandate 2FA, not to disable 2FA")
+    private Boolean enable2FA;
+
     @Inject
     private RegionService _regionService;
 
@@ -127,6 +130,10 @@ public class UpdateUserCmd extends BaseCmd {
         return username;
     }
 
+    public Boolean getEnable2FA() {
+        return enable2FA;
+    }
+
     /////////////////////////////////////////////////////
     /////////////// API Implementation///////////////////
     /////////////////////////////////////////////////////
diff --git a/server/src/main/java/com/cloud/user/AccountManagerImpl.java b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
index 1941ff1b1a0..42565c51ecb 100644
--- a/server/src/main/java/com/cloud/user/AccountManagerImpl.java
+++ b/server/src/main/java/com/cloud/user/AccountManagerImpl.java
@@ -1391,6 +1391,10 @@ public class AccountManagerImpl extends ManagerBase implements AccountManager, M
         if (StringUtils.isNotBlank(timezone)) {
             user.setTimezone(timezone);
         }
+        Boolean is2FAenabled = updateUserCmd.getEnable2FA();
+        if (is2FAenabled != null && is2FAenabled) {
+            user.setTwoFactorAuthenticationEnabled(true);
+        }
         _userDao.update(user.getId(), user);
         return _userAccountDao.findById(user.getId());
     }