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 <harikrishna.patn...@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()); }