|
|
@ -23,7 +23,6 @@ import org.thingsboard.server.common.data.StringUtils; |
|
|
import org.thingsboard.server.common.data.User; |
|
|
import org.thingsboard.server.common.data.User; |
|
|
import org.thingsboard.server.common.data.id.CustomerId; |
|
|
import org.thingsboard.server.common.data.id.CustomerId; |
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
import org.thingsboard.server.common.data.id.TenantId; |
|
|
import org.thingsboard.server.common.data.id.UserCredentialsId; |
|
|
|
|
|
import org.thingsboard.server.common.data.id.UserId; |
|
|
import org.thingsboard.server.common.data.id.UserId; |
|
|
import org.thingsboard.server.common.data.security.UserCredentials; |
|
|
import org.thingsboard.server.common.data.security.UserCredentials; |
|
|
import org.thingsboard.server.dao.service.DataValidator; |
|
|
import org.thingsboard.server.dao.service.DataValidator; |
|
|
@ -90,40 +89,24 @@ public abstract class BaseUserProcessor extends BaseEdgeProcessor { |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
protected void updateUserCredentials(TenantId tenantId, UserCredentialsUpdateMsg updateMsg) { |
|
|
protected void updateUserCredentials(TenantId tenantId, UserCredentialsUpdateMsg updateMsg) { |
|
|
UserCredentials userCredentialsFromUpdateMsg = JacksonUtil.fromString(updateMsg.getEntity(), UserCredentials.class, true); |
|
|
UserCredentials userCredentials = JacksonUtil.fromString(updateMsg.getEntity(), UserCredentials.class, true); |
|
|
if (userCredentialsFromUpdateMsg == null) { |
|
|
if (userCredentials == null) { |
|
|
throw new IllegalArgumentException(String.format("[%s] Failed to parse UserCredentials from updateMsg: %s", tenantId, updateMsg)); |
|
|
throw new IllegalArgumentException(String.format("[%s] Failed to parse UserCredentials from updateMsg: %s", tenantId, updateMsg)); |
|
|
} |
|
|
} |
|
|
|
|
|
User user = edgeCtx.getUserService().findUserById(tenantId, userCredentials.getUserId()); |
|
|
User user = edgeCtx.getUserService().findUserById(tenantId, userCredentialsFromUpdateMsg.getUserId()); |
|
|
|
|
|
if (user == null) { |
|
|
if (user == null) { |
|
|
log.warn("[{}] Can't find user by id [{}] skipping credentials update. UserCredentialsUpdateMsg [{}]", |
|
|
log.warn("[{}] Can't find user by id [{}] skipping credentials update. UserCredentialsUpdateMsg [{}]", |
|
|
tenantId, userCredentialsFromUpdateMsg.getUserId(), updateMsg); |
|
|
tenantId, userCredentials.getUserId(), updateMsg); |
|
|
return; |
|
|
return; |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
log.debug("[{}] Updating user credentials for user [{}]. New credentials Id [{}], enabled [{}]", |
|
|
log.debug("[{}] Updating user credentials for user [{}]. New credentials Id [{}], enabled [{}]", |
|
|
tenantId, user.getName(), userCredentialsFromUpdateMsg.getId(), userCredentialsFromUpdateMsg.isEnabled()); |
|
|
tenantId, user.getName(), userCredentials.getId(), userCredentials.isEnabled()); |
|
|
|
|
|
|
|
|
try { |
|
|
try { |
|
|
UserCredentials existing = edgeCtx.getUserService().findUserCredentialsByUserId(tenantId, user.getId()); |
|
|
UserCredentials userCredentialsByUserId = edgeCtx.getUserService().findUserCredentialsByUserId(tenantId, user.getId()); |
|
|
boolean created = existing == null; |
|
|
if (userCredentialsByUserId != null && !userCredentialsByUserId.getId().equals(userCredentials.getId())) { |
|
|
UserCredentialsId oldCredentialsId = created ? null : existing.getId(); |
|
|
edgeCtx.getUserService().deleteUserCredentials(tenantId, userCredentialsByUserId); |
|
|
|
|
|
|
|
|
UserCredentials updated = created ? new UserCredentials() : existing; |
|
|
|
|
|
updated.setId(userCredentialsFromUpdateMsg.getId()); |
|
|
|
|
|
updated.setUserId(user.getId()); |
|
|
|
|
|
updated.setEnabled(userCredentialsFromUpdateMsg.isEnabled()); |
|
|
|
|
|
updated.setActivateToken(userCredentialsFromUpdateMsg.getActivateToken()); |
|
|
|
|
|
updated.setAdditionalInfo(userCredentialsFromUpdateMsg.getAdditionalInfo()); |
|
|
|
|
|
updated.setPassword(userCredentialsFromUpdateMsg.getPassword()); |
|
|
|
|
|
updated.setResetToken(userCredentialsFromUpdateMsg.getResetToken()); |
|
|
|
|
|
|
|
|
|
|
|
if (created) { |
|
|
|
|
|
edgeCtx.getUserService().saveUserCredentials(tenantId, updated, false); |
|
|
|
|
|
} else { |
|
|
|
|
|
edgeCtx.getUserService().replaceUserCredentials(tenantId, updated, oldCredentialsId, false); |
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
edgeCtx.getUserService().saveUserCredentials(tenantId, userCredentials, false); |
|
|
} catch (Exception e) { |
|
|
} catch (Exception e) { |
|
|
log.error("[{}] Can't update user credentials for user [{}], userCredentialsUpdateMsg [{}]", |
|
|
log.error("[{}] Can't update user credentials for user [{}], userCredentialsUpdateMsg [{}]", |
|
|
tenantId, user.getName(), updateMsg, e); |
|
|
tenantId, user.getName(), updateMsg, e); |
|
|
|