From a7d1dd85be92f69fbd0a54959426e14e47a275cf Mon Sep 17 00:00:00 2001 From: Nikita Mazurenko Date: Mon, 24 Nov 2025 14:23:26 +0200 Subject: [PATCH] Fix overriding exiting user credential ID before calling replaceUserCredentials on BaseUserProcessor --- .../service/edge/rpc/processor/user/BaseUserProcessor.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/user/BaseUserProcessor.java b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/user/BaseUserProcessor.java index 897e49a7cd..0da0e4aade 100644 --- a/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/user/BaseUserProcessor.java +++ b/application/src/main/java/org/thingsboard/server/service/edge/rpc/processor/user/BaseUserProcessor.java @@ -23,6 +23,7 @@ import org.thingsboard.server.common.data.StringUtils; import org.thingsboard.server.common.data.User; import org.thingsboard.server.common.data.id.CustomerId; 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.security.UserCredentials; import org.thingsboard.server.dao.service.DataValidator; @@ -107,6 +108,7 @@ public abstract class BaseUserProcessor extends BaseEdgeProcessor { try { UserCredentials existing = edgeCtx.getUserService().findUserCredentialsByUserId(tenantId, user.getId()); boolean created = existing == null; + UserCredentialsId oldCredentialsId = created ? null : existing.getId(); UserCredentials updated = created ? new UserCredentials() : existing; updated.setId(userCredentialsFromUpdateMsg.getId()); @@ -120,7 +122,7 @@ public abstract class BaseUserProcessor extends BaseEdgeProcessor { if (created) { edgeCtx.getUserService().saveUserCredentials(tenantId, updated, false); } else { - edgeCtx.getUserService().replaceUserCredentials(tenantId, updated, existing.getId(), false); + edgeCtx.getUserService().replaceUserCredentials(tenantId, updated, oldCredentialsId, false); } } catch (Exception e) { log.error("[{}] Can't update user credentials for user [{}], userCredentialsUpdateMsg [{}]",