diff --git a/bubble-server/src/main/java/bubble/dao/account/TrustedClientDAO.java b/bubble-server/src/main/java/bubble/dao/account/TrustedClientDAO.java index 22b11a9f..58b092fd 100644 --- a/bubble-server/src/main/java/bubble/dao/account/TrustedClientDAO.java +++ b/bubble-server/src/main/java/bubble/dao/account/TrustedClientDAO.java @@ -5,11 +5,12 @@ package bubble.dao.account; import bubble.model.account.TrustedClient; +import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Repository; import static java.util.UUID.randomUUID; -@Repository +@Repository @Slf4j public class TrustedClientDAO extends AccountOwnedEntityDAO { @Override public Object preCreate(TrustedClient trusted) { @@ -20,4 +21,13 @@ public class TrustedClientDAO extends AccountOwnedEntityDAO { return findByUniqueFields("account", accountUuid, "device", deviceUuid); } + public void deleteDevice(String uuid) { + final int count = bulkDelete("device", uuid); + if (count <= 1) { + log.info("deleteDevice: deleted "+count+" TrustedClient records for device "+uuid); + } else { + log.warn("deleteDevice: deleted "+count+" TrustedClient records (expected only 1) for device "+uuid); + } + } + } diff --git a/bubble-server/src/main/java/bubble/dao/device/DeviceDAO.java b/bubble-server/src/main/java/bubble/dao/device/DeviceDAO.java index 38e1cac1..0f2eace0 100644 --- a/bubble-server/src/main/java/bubble/dao/device/DeviceDAO.java +++ b/bubble-server/src/main/java/bubble/dao/device/DeviceDAO.java @@ -6,6 +6,7 @@ package bubble.dao.device; import bubble.dao.account.AccountDAO; import bubble.dao.account.AccountOwnedEntityDAO; +import bubble.dao.account.TrustedClientDAO; import bubble.dao.app.AppDataDAO; import bubble.model.device.BubbleDeviceType; import bubble.model.device.Device; @@ -44,6 +45,7 @@ public class DeviceDAO extends AccountOwnedEntityDAO { @Autowired private BubbleConfiguration configuration; @Autowired private AppDataDAO dataDAO; + @Autowired private TrustedClientDAO trustDAO; @Autowired private DeviceIdService deviceIdService; @Override public Order getDefaultSortOrder() { return ORDER_CTIME_ASC; } @@ -134,6 +136,7 @@ public class DeviceDAO extends AccountOwnedEntityDAO { if (device.uninitialized()) die("Cannot delete special device: " + device.getName()); dataDAO.deleteDevice(uuid); + trustDAO.deleteDevice(uuid); super.delete(uuid); refreshVpnUsers(); } @@ -141,6 +144,7 @@ public class DeviceDAO extends AccountOwnedEntityDAO { @Override public void forceDelete(String uuid) { dataDAO.deleteDevice(uuid); + trustDAO.deleteDevice(uuid); super.delete(uuid); refreshVpnUsers(); } diff --git a/bubble-server/src/test/resources/models/tests/auth/totp_auth.json b/bubble-server/src/test/resources/models/tests/auth/totp_auth.json index 4e598f7f..5a926164 100644 --- a/bubble-server/src/test/resources/models/tests/auth/totp_auth.json +++ b/bubble-server/src/test/resources/models/tests/auth/totp_auth.json @@ -220,9 +220,9 @@ }, { - "comment": "remove trust for this device, succeeds", + "comment": "remove device, also removes trust, succeeds", "request": { - "uri": "auth/trust/delete/{{device.uuid}}", + "uri": "me/devices/{{device.uuid}}", "method": "delete" } },