diff --git a/application/src/main/data/upgrade/3.4.4/schema_update.sql b/application/src/main/data/upgrade/3.4.4/schema_update.sql index 858227dd5f..e54c6a9e7e 100644 --- a/application/src/main/data/upgrade/3.4.4/schema_update.sql +++ b/application/src/main/data/upgrade/3.4.4/schema_update.sql @@ -32,7 +32,7 @@ CREATE TABLE IF NOT EXISTS user_settings ( ); ALTER TABLE user_credentials - ADD COLUMN IF NOT EXISTS additional_info varchar DEFAULT '{}'; + ADD COLUMN IF NOT EXISTS additional_info varchar NOT NULL DEFAULT '{}'; UPDATE user_credentials SET additional_info = json_build_object('userPasswordHistory', (u.additional_info::json -> 'userPasswordHistory')) diff --git a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java index 57bd9925d6..366f2b7306 100644 --- a/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java +++ b/dao/src/main/java/org/thingsboard/server/dao/user/UserServiceImpl.java @@ -127,7 +127,8 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic userCredentials.setEnabled(false); userCredentials.setActivateToken(StringUtils.randomAlphanumeric(DEFAULT_TOKEN_LENGTH)); userCredentials.setUserId(new UserId(savedUser.getUuidId())); - checkAdditionalInfoAndSaveUserCredentials(user.getTenantId(), userCredentials); + userCredentials.setAdditionalInfo(JacksonUtil.newObjectNode()); + userCredentialsDao.save(user.getTenantId(), userCredentials); } return savedUser; } @@ -157,7 +158,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic public UserCredentials saveUserCredentials(TenantId tenantId, UserCredentials userCredentials) { log.trace("Executing saveUserCredentials [{}]", userCredentials); userCredentialsValidator.validate(userCredentials, data -> tenantId); - return checkAdditionalInfoAndSaveUserCredentials(tenantId, userCredentials); + return userCredentialsDao.save(tenantId, userCredentials); } @Override @@ -216,7 +217,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic if (userCredentials.getPassword() != null) { updatePasswordHistory(userCredentials); } - return checkAdditionalInfoAndSaveUserCredentials(tenantId, userCredentials); + return userCredentialsDao.save(tenantId, userCredentials); } @Override @@ -347,16 +348,9 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic return failedLoginAttempts; } - private UserCredentials checkAdditionalInfoAndSaveUserCredentials(TenantId tenantId, UserCredentials userCredentials) { - if (userCredentials.getAdditionalInfo() == null){ - userCredentials.setAdditionalInfo(JacksonUtil.newObjectNode()); - } - return userCredentialsDao.save(tenantId, userCredentials); - } - private void updatePasswordHistory(UserCredentials userCredentials) { JsonNode additionalInfo = userCredentials.getAdditionalInfo(); - if (additionalInfo == null) { + if (!(additionalInfo instanceof ObjectNode)) { additionalInfo = JacksonUtil.newObjectNode(); } Map userPasswordHistoryMap = null;