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