@ -40,7 +40,6 @@ import org.thingsboard.server.common.data.id.UserId;
import org.thingsboard.server.common.data.page.PageData ;
import org.thingsboard.server.common.data.page.PageLink ;
import org.thingsboard.server.common.data.security.UserCredentials ;
import org.thingsboard.server.common.data.security.UserSettings ;
import org.thingsboard.server.common.data.security.event.UserCredentialsInvalidationEvent ;
import org.thingsboard.server.dao.entity.AbstractEntityService ;
import org.thingsboard.server.dao.exception.IncorrectParameterException ;
@ -128,7 +127,10 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
userCredentials . setEnabled ( false ) ;
userCredentials . setActivateToken ( StringUtils . randomAlphanumeric ( DEFAULT_TOKEN_LENGTH ) ) ;
userCredentials . setUserId ( new UserId ( savedUser . getUuidId ( ) ) ) ;
saveUserCredentialsAndPasswordHistory ( user . getTenantId ( ) , userCredentials ) ;
if ( userCredentials . getPassword ( ) ! = null ) {
updatePasswordHistory ( userCredentials ) ;
}
userCredentialsDao . save ( user . getTenantId ( ) , userCredentials ) ;
}
return savedUser ;
}
@ -158,7 +160,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 saveUserCredentialsAndPasswordHistory ( tenantId , userCredentials ) ;
return userCredentialsDao . save ( tenantId , userCredentials ) ;
}
@Override
@ -176,7 +178,9 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
userCredentials . setEnabled ( true ) ;
userCredentials . setActivateToken ( null ) ;
userCredentials . setPassword ( password ) ;
if ( userCredentials . getPassword ( ) ! = null ) {
updatePasswordHistory ( userCredentials ) ;
}
return saveUserCredentials ( tenantId , userCredentials ) ;
}
@ -212,7 +216,10 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
userCredentialsValidator . validate ( userCredentials , data - > tenantId ) ;
userCredentialsDao . removeById ( tenantId , userCredentials . getUuidId ( ) ) ;
userCredentials . setId ( null ) ;
return saveUserCredentialsAndPasswordHistory ( tenantId , userCredentials ) ;
if ( userCredentials . getPassword ( ) ! = null ) {
updatePasswordHistory ( userCredentials ) ;
}
return userCredentialsDao . save ( tenantId , userCredentials ) ;
}
@Override
@ -236,6 +243,13 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
return userDao . findByTenantId ( tenantId . getId ( ) , pageLink ) ;
}
@Override
public PageData < User > findAllUsers ( PageLink pageLink ) {
log . trace ( "Executing findAllUsers, pageLink [{}]" , pageLink ) ;
validatePageLink ( pageLink ) ;
return userDao . findAll ( pageLink ) ;
}
@Override
public PageData < User > findTenantAdmins ( TenantId tenantId , PageLink pageLink ) {
log . trace ( "Executing findTenantAdmins, tenantId [{}], pageLink [{}]" , tenantId , pageLink ) ;
@ -343,17 +357,8 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
return failedLoginAttempts ;
}
private UserCredentials saveUserCredentialsAndPasswordHistory ( TenantId tenantId , UserCredentials userCredentials ) {
UserCredentials result = userCredentialsDao . save ( tenantId , userCredentials ) ;
User user = findUserById ( tenantId , userCredentials . getUserId ( ) ) ;
if ( userCredentials . getPassword ( ) ! = null ) {
updatePasswordHistory ( user , userCredentials ) ;
}
return result ;
}
private void updatePasswordHistory ( User user , UserCredentials userCredentials ) {
JsonNode additionalInfo = user . getAdditionalInfo ( ) ;
private void updatePasswordHistory ( UserCredentials userCredentials ) {
JsonNode additionalInfo = userCredentials . getAdditionalInfo ( ) ;
if ( ! ( additionalInfo instanceof ObjectNode ) ) {
additionalInfo = JacksonUtil . newObjectNode ( ) ;
}
@ -374,8 +379,7 @@ public class UserServiceImpl extends AbstractEntityService implements UserServic
userPasswordHistoryJson = JacksonUtil . valueToTree ( userPasswordHistoryMap ) ;
( ( ObjectNode ) additionalInfo ) . set ( USER_PASSWORD_HISTORY , userPasswordHistoryJson ) ;
}
user . setAdditionalInfo ( additionalInfo ) ;
saveUser ( user ) ;
userCredentials . setAdditionalInfo ( additionalInfo ) ;
}
private final PaginatedRemover < TenantId , User > tenantAdminsRemover = new PaginatedRemover < > ( ) {