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