From 7e07aa022ddc9f31f6d6e682bc6d1eb4d8891b68 Mon Sep 17 00:00:00 2001 From: aliaska-varieva Date: Tue, 18 Aug 2026 12:07:03 +0200 Subject: [PATCH] =?UTF-8?q?feat(client):=20optional=20userId=20on=20agent?= =?UTF-8?q?=20registration=20=E2=80=94=20request=20DTO=20+=20Machine=20doc?= =?UTF-8?q?ument?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 --- .../openframe/client/dto/agent/AgentRegistrationRequest.java | 2 ++ .../service/agentregistration/AgentRegistrationService.java | 5 +++++ .../java/com/openframe/data/document/device/Machine.java | 1 + 3 files changed, 8 insertions(+) diff --git a/openframe-client-core/src/main/java/com/openframe/client/dto/agent/AgentRegistrationRequest.java b/openframe-client-core/src/main/java/com/openframe/client/dto/agent/AgentRegistrationRequest.java index 240d4c613..d54164aa8 100644 --- a/openframe-client-core/src/main/java/com/openframe/client/dto/agent/AgentRegistrationRequest.java +++ b/openframe-client-core/src/main/java/com/openframe/client/dto/agent/AgentRegistrationRequest.java @@ -16,6 +16,8 @@ public class AgentRegistrationRequest { private String hostname; @NotBlank private String organizationId; + // User who installed the agent; optional — older agents don't send it + private String userId; // Network information private String ip; diff --git a/openframe-client-core/src/main/java/com/openframe/client/service/agentregistration/AgentRegistrationService.java b/openframe-client-core/src/main/java/com/openframe/client/service/agentregistration/AgentRegistrationService.java index 676c9611c..db8c95da5 100644 --- a/openframe-client-core/src/main/java/com/openframe/client/service/agentregistration/AgentRegistrationService.java +++ b/openframe-client-core/src/main/java/com/openframe/client/service/agentregistration/AgentRegistrationService.java @@ -25,6 +25,7 @@ import static com.openframe.client.service.AgentAuthService.CLIENT_CREDENTIALS_GRANT_TYPE; import static com.openframe.core.exception.ErrorCode.CLIENT_SECRET_INVALID; import static java.lang.String.format; +import static org.apache.commons.lang3.StringUtils.isNotBlank; @Service @RequiredArgsConstructor @@ -165,6 +166,10 @@ private void applyRegistrationRequestFields(Machine machine, AgentRegistrationRe machine.setOsType(normalizeOsType(request.getOsType())); machine.setAgentVersion(request.getAgentVersion()); machine.setLastSeen(Instant.now()); + // Optional; keep the existing value on reinstall when the agent doesn't send it + if (isNotBlank(request.getUserId())) { + machine.setUserId(request.getUserId()); + } } private static OsType normalizeOsType(String rawOsType) { diff --git a/openframe-data-mongo-common/src/main/java/com/openframe/data/document/device/Machine.java b/openframe-data-mongo-common/src/main/java/com/openframe/data/document/device/Machine.java index 0e2948b80..d5429a442 100644 --- a/openframe-data-mongo-common/src/main/java/com/openframe/data/document/device/Machine.java +++ b/openframe-data-mongo-common/src/main/java/com/openframe/data/document/device/Machine.java @@ -29,6 +29,7 @@ public class Machine implements TenantScoped { private Instant lastSeen; @Indexed private String organizationId; + private String userId; // User who installed the agent; optional, absent for older registrations private String hostname; private String displayName; private String nickname;