From 37a44353a81d91c0f90c23bb5fb8d84258964907 Mon Sep 17 00:00:00 2001 From: "13621160019@163.com" <13621160019@163.com> Date: Wed, 8 Dec 2021 23:28:58 +0800 Subject: [PATCH] added access control to shopfloor, store and tenant in api and admin --- admin/Dockerfile | 2 +- .../shopfloor/shopfloor.controller.js | 11 +- .../shopfloorequipment.controller.js | 10 +- .../shopfloor/shopfloormeter.controller.js | 19 +- .../shopfloor/shopfloorsensor.controller.js | 10 +- .../settings/store/store.controller.js | 31 +- .../settings/store/storemeter.controller.js | 22 +- .../settings/store/storepoint.controller.js | 10 +- .../settings/store/storesensor.controller.js | 10 +- .../settings/tenant/tenant.controller.js | 12 +- .../tenant/tenant.master.controller.js | 2 - .../settings/tenant/tenantmeter.controller.js | 18 +- .../tenant/tenantsensor.controller.js | 38 +- myems-api/MyEMS.postman_collection.json | 554 ++++++++++++++++-- web/Dockerfile | 2 +- 15 files changed, 640 insertions(+), 111 deletions(-) diff --git a/admin/Dockerfile b/admin/Dockerfile index 2afb2091..171f5b7f 100644 --- a/admin/Dockerfile +++ b/admin/Dockerfile @@ -1,4 +1,4 @@ -FROM nginx:1.21.1 +FROM nginx:1.21.4 # remove the default config RUN rm /etc/nginx/conf.d/default.conf && \ diff --git a/admin/app/controllers/settings/shopfloor/shopfloor.controller.js b/admin/app/controllers/settings/shopfloor/shopfloor.controller.js index f67d9e64..6d7c877c 100644 --- a/admin/app/controllers/settings/shopfloor/shopfloor.controller.js +++ b/admin/app/controllers/settings/shopfloor/shopfloor.controller.js @@ -1,6 +1,15 @@ 'use strict'; -app.controller('ShopfloorController', function ($scope, $window, $translate, $uibModal, CostCenterService, ContactService, ShopfloorService, toaster, SweetAlert) { +app.controller('ShopfloorController', function ( + $scope, + $window, + $translate, + $uibModal, + CostCenterService, + ContactService, + ShopfloorService, + toaster, + SweetAlert) { $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllCostCenters = function () { CostCenterService.getAllCostCenters(function (response) { diff --git a/admin/app/controllers/settings/shopfloor/shopfloorequipment.controller.js b/admin/app/controllers/settings/shopfloor/shopfloorequipment.controller.js index b49e6007..47c1556a 100644 --- a/admin/app/controllers/settings/shopfloor/shopfloorequipment.controller.js +++ b/admin/app/controllers/settings/shopfloor/shopfloorequipment.controller.js @@ -1,6 +1,14 @@ 'use strict'; -app.controller('ShopfloorEquipmentController', function ($scope, $window, $translate, ShopfloorService, EquipmentService, ShopfloorEquipmentService, toaster, SweetAlert) { +app.controller('ShopfloorEquipmentController', function ( + $scope, + $window, + $translate, + ShopfloorService, + EquipmentService, + ShopfloorEquipmentService, + toaster, + SweetAlert) { $scope.currentShopfloor = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllEquipments = function () { diff --git a/admin/app/controllers/settings/shopfloor/shopfloormeter.controller.js b/admin/app/controllers/settings/shopfloor/shopfloormeter.controller.js index dea19d21..8fb53d30 100644 --- a/admin/app/controllers/settings/shopfloor/shopfloormeter.controller.js +++ b/admin/app/controllers/settings/shopfloor/shopfloormeter.controller.js @@ -1,12 +1,16 @@ 'use strict'; -app.controller('ShopfloorMeterController', function($scope, $window, $timeout, $translate, - MeterService, - VirtualMeterService, - OfflineMeterService, - ShopfloorMeterService, - ShopfloorService, - toaster) { +app.controller('ShopfloorMeterController', function( + $scope, + $window, + $timeout, + $translate, + MeterService, + VirtualMeterService, + OfflineMeterService, + ShopfloorMeterService, + ShopfloorService, + toaster) { $scope.currentShopfloor = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllShopfloors = function(id) { @@ -80,7 +84,6 @@ app.controller('ShopfloorMeterController', function($scope, $window, $timeout, $ }; - $scope.getAllOfflineMeters = function() { OfflineMeterService.getAllOfflineMeters(function (response) { if (angular.isDefined(response.status) && response.status === 200) { diff --git a/admin/app/controllers/settings/shopfloor/shopfloorsensor.controller.js b/admin/app/controllers/settings/shopfloor/shopfloorsensor.controller.js index e95404b4..76b11a8b 100644 --- a/admin/app/controllers/settings/shopfloor/shopfloorsensor.controller.js +++ b/admin/app/controllers/settings/shopfloor/shopfloorsensor.controller.js @@ -1,6 +1,14 @@ 'use strict'; -app.controller('ShopfloorSensorController', function ($scope, $window, $translate, ShopfloorService, SensorService, ShopfloorSensorService, toaster, SweetAlert) { +app.controller('ShopfloorSensorController', function ( + $scope, + $window, + $translate, + ShopfloorService, + SensorService, + ShopfloorSensorService, + toaster, + SweetAlert) { $scope.currentShopfloor = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllSensors = function () { diff --git a/admin/app/controllers/settings/store/store.controller.js b/admin/app/controllers/settings/store/store.controller.js index 8010bb9e..ecd612ff 100644 --- a/admin/app/controllers/settings/store/store.controller.js +++ b/admin/app/controllers/settings/store/store.controller.js @@ -1,6 +1,16 @@ 'use strict'; -app.controller('StoreController', function($scope, $window, $translate,$uibModal, CostCenterService, ContactService, StoreService, StoreTypeService, toaster,SweetAlert) { +app.controller('StoreController', function( + $scope, + $window, + $translate, + $uibModal, + CostCenterService, + ContactService, + StoreService, + StoreTypeService, + toaster, + SweetAlert) { $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllCostCenters = function() { CostCenterService.getAllCostCenters(function (response) { @@ -32,15 +42,16 @@ app.controller('StoreController', function($scope, $window, $translate,$uibModal }); }; -$scope.getAllStoreTypes = function() { - StoreTypeService.getAllStoreTypes(function (response) { - if (angular.isDefined(response.status) && response.status === 200) { - $scope.storetypes = response.data; - } else { - $scope.storetypes = []; - } - }); -}; + $scope.getAllStoreTypes = function() { + StoreTypeService.getAllStoreTypes(function (response) { + if (angular.isDefined(response.status) && response.status === 200) { + $scope.storetypes = response.data; + } else { + $scope.storetypes = []; + } + }); + }; + $scope.addStore = function() { var modalInstance = $uibModal.open({ templateUrl: 'views/settings/store/store.model.html', diff --git a/admin/app/controllers/settings/store/storemeter.controller.js b/admin/app/controllers/settings/store/storemeter.controller.js index 4ea7539b..5af0572e 100644 --- a/admin/app/controllers/settings/store/storemeter.controller.js +++ b/admin/app/controllers/settings/store/storemeter.controller.js @@ -1,21 +1,25 @@ 'use strict'; -app.controller('StoreMeterController', function($scope, $window, $timeout, $translate, - MeterService, - VirtualMeterService, - OfflineMeterService, - StoreMeterService, - StoreService, - toaster) { +app.controller('StoreMeterController', function( + $scope, + $window, + $timeout, + $translate, + MeterService, + VirtualMeterService, + OfflineMeterService, + StoreMeterService, + StoreService, + toaster) { $scope.currentStore = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllStores = function(id) { StoreService.getAllStores(function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.stores = response.data; - } else { + } else { $scope.stores = []; - } + } }); }; diff --git a/admin/app/controllers/settings/store/storepoint.controller.js b/admin/app/controllers/settings/store/storepoint.controller.js index 4569dda0..c06951a1 100644 --- a/admin/app/controllers/settings/store/storepoint.controller.js +++ b/admin/app/controllers/settings/store/storepoint.controller.js @@ -49,11 +49,11 @@ app.controller('StorePointController', function ( }; - $scope.changeStore=function(item,model){ - $scope.currentStore=item; - $scope.currentStore.selected=model; - $scope.getPointsByStoreID($scope.currentStore.id); - }; + $scope.changeStore=function(item,model){ + $scope.currentStore=item; + $scope.currentStore.selected=model; + $scope.getPointsByStoreID($scope.currentStore.id); + }; $scope.changeDataSource = function (item, model) { $scope.currentDataSource = model; diff --git a/admin/app/controllers/settings/store/storesensor.controller.js b/admin/app/controllers/settings/store/storesensor.controller.js index 2d4c00a5..54b9428d 100644 --- a/admin/app/controllers/settings/store/storesensor.controller.js +++ b/admin/app/controllers/settings/store/storesensor.controller.js @@ -1,6 +1,14 @@ 'use strict'; -app.controller('StoreSensorController', function ($scope, $window, $translate, StoreService, SensorService, StoreSensorService, toaster, SweetAlert) { +app.controller('StoreSensorController', function ( + $scope, + $window, + $translate, + StoreService, + SensorService, + StoreSensorService, + toaster, + SweetAlert) { $scope.currentStore = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllSensors = function () { diff --git a/admin/app/controllers/settings/tenant/tenant.controller.js b/admin/app/controllers/settings/tenant/tenant.controller.js index 35970dcc..21ca44dc 100644 --- a/admin/app/controllers/settings/tenant/tenant.controller.js +++ b/admin/app/controllers/settings/tenant/tenant.controller.js @@ -1,6 +1,16 @@ 'use strict'; -app.controller('TenantController', function ($scope, $window, $translate, $uibModal, CostCenterService, ContactService, TenantService, TenantTypeService, toaster, SweetAlert) { +app.controller('TenantController', function ( + $scope, + $window, + $translate, + $uibModal, + CostCenterService, + ContactService, + TenantService, + TenantTypeService, + toaster, + SweetAlert) { $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllCostCenters = function () { CostCenterService.getAllCostCenters(function (response) { diff --git a/admin/app/controllers/settings/tenant/tenant.master.controller.js b/admin/app/controllers/settings/tenant/tenant.master.controller.js index 03d7471b..9680338c 100644 --- a/admin/app/controllers/settings/tenant/tenant.master.controller.js +++ b/admin/app/controllers/settings/tenant/tenant.master.controller.js @@ -1,8 +1,6 @@ 'use strict'; app.controller('TenantMasterController', function($scope) { - - $scope.$on('handleEmitTenantChanged', function(event) { $scope.$broadcast('handleBroadcastTenantChanged'); }); diff --git a/admin/app/controllers/settings/tenant/tenantmeter.controller.js b/admin/app/controllers/settings/tenant/tenantmeter.controller.js index 6f7c9cbf..397395b9 100644 --- a/admin/app/controllers/settings/tenant/tenantmeter.controller.js +++ b/admin/app/controllers/settings/tenant/tenantmeter.controller.js @@ -1,12 +1,16 @@ 'use strict'; -app.controller('TenantMeterController', function($scope, $window, $timeout, $translate, - MeterService, - VirtualMeterService, - OfflineMeterService, - TenantMeterService, - TenantService, - toaster) { +app.controller('TenantMeterController', function( + $scope, + $window, + $timeout, + $translate, + MeterService, + VirtualMeterService, + OfflineMeterService, + TenantMeterService, + TenantService, + toaster) { $scope.currentTenant = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllTenants = function(id) { diff --git a/admin/app/controllers/settings/tenant/tenantsensor.controller.js b/admin/app/controllers/settings/tenant/tenantsensor.controller.js index c37d7d3c..dbf9a575 100644 --- a/admin/app/controllers/settings/tenant/tenantsensor.controller.js +++ b/admin/app/controllers/settings/tenant/tenantsensor.controller.js @@ -1,6 +1,14 @@ 'use strict'; -app.controller('TenantSensorController', function ($scope, $window, $translate, TenantService, SensorService, TenantSensorService, toaster, SweetAlert) { +app.controller('TenantSensorController', function ( + $scope, + $window, + $translate, + TenantService, + SensorService, + TenantSensorService, + toaster, + SweetAlert) { $scope.currentTenant = {selected:undefined}; $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllSensors = function () { @@ -23,21 +31,21 @@ app.controller('TenantSensorController', function ($scope, $window, $translate, }); }; - $scope.changeTenant=function(item,model){ - $scope.currentTenant=item; - $scope.currentTenant.selected=model; - $scope.getSensorsByTenantID($scope.currentTenant.id); - }; + $scope.changeTenant=function(item,model){ + $scope.currentTenant=item; + $scope.currentTenant.selected=model; + $scope.getSensorsByTenantID($scope.currentTenant.id); + }; - $scope.getAllTenants = function () { - TenantService.getAllTenants(function (response) { - if (angular.isDefined(response.status) && response.status === 200) { - $scope.tenants = response.data; - } else { - $scope.tenants = []; - } - }); - }; + $scope.getAllTenants = function () { + TenantService.getAllTenants(function (response) { + if (angular.isDefined(response.status) && response.status === 200) { + $scope.tenants = response.data; + } else { + $scope.tenants = []; + } + }); + }; $scope.pairSensor = function (dragEl, dropEl) { var sensorid = angular.element('#' + dragEl).scope().sensor.id; diff --git a/myems-api/MyEMS.postman_collection.json b/myems-api/MyEMS.postman_collection.json index 0639ac50..ed679a2f 100644 --- a/myems-api/MyEMS.postman_collection.json +++ b/myems-api/MyEMS.postman_collection.json @@ -5401,7 +5401,18 @@ "name": "POST Create New Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"MyEMS Shopfloor2\", \"area\":999.99, \"is_input_counted\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"Shopfloor description\"}}" @@ -5422,19 +5433,30 @@ "name": "PUT Update a Shopfloor", "request": { "method": "PUT", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"MyEMS Shopfloor2\", \"area\":999.99, \"is_input_counted\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"Shopfloor description\"}}" }, "url": { - "raw": "{{base_url}}/shopfloors/2", + "raw": "{{base_url}}/shopfloors/3", "host": [ "{{base_url}}" ], "path": [ "shopfloors", - "2" + "3" ] } }, @@ -5444,7 +5466,18 @@ "name": "DELETE a Shopfloor by ID", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/2", "host": [ @@ -5481,7 +5514,18 @@ "name": "POST Bind an Equipment to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"equipment_id\":1}}" @@ -5504,7 +5548,18 @@ "name": "DELETE an Equipment from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/equipments/1", "host": [ @@ -5543,7 +5598,18 @@ "name": "POST Bind a Meter to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"meter_id\":1}}" @@ -5566,7 +5632,18 @@ "name": "DELETE a Meter from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/meters/1", "host": [ @@ -5605,7 +5682,18 @@ "name": "POST Bind an OfflineMeter to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"offline_meter_id\":1}}" @@ -5628,7 +5716,18 @@ "name": "DELETE an Offline Meter from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/offlinemeters/1", "host": [ @@ -5667,7 +5766,18 @@ "name": "POST Bind a Point to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"point_id\":1}}" @@ -5690,7 +5800,18 @@ "name": "DELETE a Point from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/points/1", "host": [ @@ -5729,7 +5850,18 @@ "name": "POST Bind a Sensor to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"sensor_id\":1}}" @@ -5752,7 +5884,18 @@ "name": "DELETE a Sensor from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/sensors/1", "host": [ @@ -5791,7 +5934,18 @@ "name": "POST Bind a Virtual Meter to a Shopfloor", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"virtual_meter_id\":1}}" @@ -5814,7 +5968,18 @@ "name": "DELETE a Virtual Meter from Shopfloor", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/shopfloors/1/virtualmeters/1", "host": [ @@ -6643,7 +6808,18 @@ "name": "POST Create New Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"麦当劳(新王府井店)\", \"address\":\"北京市东城区王府井大街200号工美大厦1层010-65120499\", \"latitude\":39.909429, \"longitude\":116.416993, \"area\":600.000, \"store_type_id\":1, \"is_input_counted\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"Classic, long-running fast-food chain known for its burgers, fries & shakes.\"}}" @@ -6664,19 +6840,30 @@ "name": "PUT Update a Store", "request": { "method": "PUT", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"麦当劳(新王府井店)\", \"address\":\"北京市东城区王府井大街200号工美大厦1层010-65120499\", \"latitude\":39.909429, \"longitude\":116.416993, \"area\":600.000, \"store_type_id\":1, \"is_input_counted\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"Classic, long-running fast-food chain known for its burgers, fries & shakes.\"}}" }, "url": { - "raw": "{{base_url}}/stores/2", + "raw": "{{base_url}}/stores/3", "host": [ "{{base_url}}" ], "path": [ "stores", - "2" + "3" ] } }, @@ -6686,15 +6873,26 @@ "name": "DELETE a Store by ID", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { - "raw": "{{base_url}}/stores/2", + "raw": "{{base_url}}/stores/3", "host": [ "{{base_url}}" ], "path": [ "stores", - "2" + "3" ] } }, @@ -6723,7 +6921,18 @@ "name": "POST Bind a Meter to a Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"meter_id\":1}}" @@ -6746,7 +6955,18 @@ "name": "DELETE a Meter from Store", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/stores/1/meters/1", "host": [ @@ -6785,7 +7005,18 @@ "name": "POST Bind an OfflineMeter to a Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"offline_meter_id\":1}}" @@ -6808,7 +7039,18 @@ "name": "DELETE an Offline Meter from Store", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/stores/1/offlinemeters/1", "host": [ @@ -6847,7 +7089,18 @@ "name": "POST Bind a Point to a Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"point_id\":1}}" @@ -6870,7 +7123,18 @@ "name": "DELETE a Point from Store", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/stores/1/points/1", "host": [ @@ -6909,7 +7173,18 @@ "name": "POST Bind a Sensor to a Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"sensor_id\":1}}" @@ -6932,7 +7207,18 @@ "name": "DELETE a Sensor from Stores", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/stores/1/sensors/1", "host": [ @@ -6971,7 +7257,18 @@ "name": "POST Bind a Virtual Meter to a Store", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"virtual_meter_id\":1}}" @@ -6994,7 +7291,18 @@ "name": "DELETE a Virtual Meter from Store", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/stores/1/virtualmeters/1", "host": [ @@ -7332,7 +7640,18 @@ "name": "POST Create New Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"Starbucks\", \"buildings\":\"Building #1\", \"floors\":\"L1 L2 L3\", \"rooms\":\"1201b+2247+3F\", \"area\":418.8, \"tenant_type_id\":9, \"is_input_counted\":true, \"is_key_tenant\":true,\n\"lease_number\":\"6b0da806\", \"lease_start_datetime\":\"2021-01-01T00:00:00\", \"lease_end_datetime\":\"2022-01-01T00:00:00\", \"is_in_lease\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"my description\"}}" @@ -7353,7 +7672,18 @@ "name": "PUT Update a Tenant", "request": { "method": "PUT", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"name\":\"Hermes 爱马仕\", \"buildings\":\"Building #1\", \"floors\":\"L1 L2 L3 L4 L5\", \"rooms\":\"1201b+2247+3F\", \"area\":818.8, \"tenant_type_id\":9, \"is_input_counted\":true, \"is_key_tenant\":true,\n\"lease_number\":\"6b0da806\", \"lease_start_datetime_utc\":\"2021-01-01T00:00:00\", \"lease_end_datetime_utc\":\"2022-01-01T00:00:00\", \"is_in_lease\":true, \"contact_id\":1, \"cost_center_id\":1, \"description\":\"my description\"}}" @@ -7375,9 +7705,27 @@ "name": "DELETE a Tenant by ID", "request": { "method": "GET", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { - "raw": "" + "raw": "{{base_url}}/tenants/2", + "host": [ + "{{base_url}}" + ], + "path": [ + "tenants", + "2" + ] } }, "response": [] @@ -7405,7 +7753,18 @@ "name": "POST Bind a Meter to a Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"meter_id\":1}}" @@ -7428,7 +7787,18 @@ "name": "DELETE a Meter from Tenant", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/tenants/1/meters/1", "host": [ @@ -7467,7 +7837,18 @@ "name": "POST Bind an OfflineMeter to a Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"offline_meter_id\":1}}" @@ -7490,7 +7871,18 @@ "name": "DELETE an Offline Meter from Tenant", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/tenants/1/offlinemeters/1", "host": [ @@ -7529,7 +7921,18 @@ "name": "POST Bind a Point to a Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"point_id\":1}}" @@ -7552,7 +7955,18 @@ "name": "DELETE a Point from Tenant", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/tenants/1/points/1", "host": [ @@ -7591,7 +8005,18 @@ "name": "POST Bind a Sensor to a Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"sensor_id\":1}}" @@ -7614,7 +8039,18 @@ "name": "DELETE a Sensor from Tenant", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/tenants/1/sensors/1", "host": [ @@ -7653,7 +8089,18 @@ "name": "POST Bind a Virtual Meter to a Tenant", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"virtual_meter_id\":1}}" @@ -7676,7 +8123,18 @@ "name": "DELETE a Virtual Meter from Tenant", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", + "type": "text" + }, + { + "key": "Token", + "value": "9a3748fadf64270dd4617594939169d0008a1b713e3a5861af384c68de73442b56b56771ce2be1e51ecd7443ec0fc1fbd6dcc3335a2c7518ca12b7a479ccb2e0", + "type": "text" + } + ], "url": { "raw": "{{base_url}}/tenants/1/virtualmeters/1", "host": [ diff --git a/web/Dockerfile b/web/Dockerfile index 0df5fdd6..f1d31812 100644 --- a/web/Dockerfile +++ b/web/Dockerfile @@ -1,4 +1,4 @@ -FROM nginx:1.21.1 +FROM nginx:1.21.4 # remove the default config RUN rm /etc/nginx/conf.d/default.conf && rm /etc/nginx/nginx.conf