Added device creation with token (#2272)
* Added device creation with token * Fixes after code review * Added device creation with token
This commit is contained in:
parent
a2cc974865
commit
f23cfc9880
@ -82,7 +82,8 @@ public class DeviceController extends BaseController {
|
||||
@PreAuthorize("hasAnyAuthority('TENANT_ADMIN', 'CUSTOMER_USER')")
|
||||
@RequestMapping(value = "/device", method = RequestMethod.POST)
|
||||
@ResponseBody
|
||||
public Device saveDevice(@RequestBody Device device) throws ThingsboardException {
|
||||
public Device saveDevice(@RequestBody Device device,
|
||||
@RequestParam(name = "accessToken", required = false) String accessToken) throws ThingsboardException {
|
||||
try {
|
||||
device.setTenantId(getCurrentUser().getTenantId());
|
||||
|
||||
@ -91,7 +92,7 @@ public class DeviceController extends BaseController {
|
||||
accessControlService.checkPermission(getCurrentUser(), Resource.DEVICE, operation,
|
||||
device.getId(), device);
|
||||
|
||||
Device savedDevice = checkNotNull(deviceService.saveDevice(device));
|
||||
Device savedDevice = checkNotNull(deviceService.saveDeviceWithAccessToken(device, accessToken));
|
||||
|
||||
actorService
|
||||
.onDeviceNameOrTypeUpdate(
|
||||
|
||||
@ -37,6 +37,8 @@ public interface DeviceService {
|
||||
|
||||
Device saveDevice(Device device);
|
||||
|
||||
Device saveDeviceWithAccessToken(Device device, String accessToken);
|
||||
|
||||
Device assignDeviceToCustomer(TenantId tenantId, DeviceId deviceId, CustomerId customerId);
|
||||
|
||||
Device unassignDeviceFromCustomer(TenantId tenantId, DeviceId deviceId);
|
||||
|
||||
@ -119,9 +119,19 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
|
||||
return deviceOpt.orElse(null);
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = DEVICE_CACHE, key = "{#device.tenantId, #device.name}")
|
||||
@Override
|
||||
public Device saveDeviceWithAccessToken(Device device, String accessToken) {
|
||||
return doSaveDevice(device, accessToken);
|
||||
}
|
||||
|
||||
@CacheEvict(cacheNames = DEVICE_CACHE, key = "{#device.tenantId, #device.name}")
|
||||
@Override
|
||||
public Device saveDevice(Device device) {
|
||||
return doSaveDevice(device, null);
|
||||
}
|
||||
|
||||
private Device doSaveDevice(Device device, String accessToken) {
|
||||
log.trace("Executing saveDevice [{}]", device);
|
||||
deviceValidator.validate(device, Device::getTenantId);
|
||||
Device savedDevice;
|
||||
@ -143,7 +153,7 @@ public class DeviceServiceImpl extends AbstractEntityService implements DeviceSe
|
||||
DeviceCredentials deviceCredentials = new DeviceCredentials();
|
||||
deviceCredentials.setDeviceId(new DeviceId(savedDevice.getUuidId()));
|
||||
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
||||
deviceCredentials.setCredentialsId(RandomStringUtils.randomAlphanumeric(20));
|
||||
deviceCredentials.setCredentialsId(!StringUtils.isEmpty(accessToken) ? accessToken : RandomStringUtils.randomAlphanumeric(20));
|
||||
deviceCredentialsService.createDeviceCredentials(device.getTenantId(), deviceCredentials);
|
||||
}
|
||||
return savedDevice;
|
||||
|
||||
@ -225,13 +225,6 @@ public class RestClient implements ClientHttpRequestInterceptor {
|
||||
return restTemplate.postForEntity(baseURL + "/api/customer", customer, Customer.class).getBody();
|
||||
}
|
||||
|
||||
public Device createDevice(String name, String type) {
|
||||
Device device = new Device();
|
||||
device.setName(name);
|
||||
device.setType(type);
|
||||
return restTemplate.postForEntity(baseURL + "/api/device", device, Device.class).getBody();
|
||||
}
|
||||
|
||||
public DeviceCredentials updateDeviceCredentials(DeviceId deviceId, String token) {
|
||||
DeviceCredentials deviceCredentials = getCredentials(deviceId);
|
||||
deviceCredentials.setCredentialsType(DeviceCredentialsType.ACCESS_TOKEN);
|
||||
@ -239,10 +232,30 @@ public class RestClient implements ClientHttpRequestInterceptor {
|
||||
return saveDeviceCredentials(deviceCredentials);
|
||||
}
|
||||
|
||||
public Device createDevice(Device device) {
|
||||
return restTemplate.postForEntity(baseURL + "/api/device", device, Device.class).getBody();
|
||||
public Device createDevice(String name, String type) {
|
||||
Device device = new Device();
|
||||
device.setName(name);
|
||||
device.setType(type);
|
||||
return doCreateDevice(device, null);
|
||||
}
|
||||
|
||||
public Device createDevice(Device device) {
|
||||
return doCreateDevice(device, null);
|
||||
}
|
||||
|
||||
public Device createDevice(Device device, String accessToken) {
|
||||
return doCreateDevice(device, accessToken);
|
||||
}
|
||||
|
||||
private Device doCreateDevice(Device device, String accessToken) {
|
||||
Map<String, String> params = new HashMap<>();
|
||||
String deviceCreationUrl = "/api/device";
|
||||
if (!StringUtils.isEmpty(accessToken)) {
|
||||
deviceCreationUrl = deviceCreationUrl + "?accessToken={accessToken}";
|
||||
params.put("accessToken", accessToken);
|
||||
}
|
||||
return restTemplate.postForEntity(baseURL + deviceCreationUrl, device, Device.class, params).getBody();
|
||||
}
|
||||
public Asset createAsset(Asset asset) {
|
||||
return restTemplate.postForEntity(baseURL + "/api/asset", asset, Asset.class).getBody();
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user