From 3b0d4a13f5dc5023a53ec56c9c0afbc8ca2a8bc1 Mon Sep 17 00:00:00 2001 From: "13621160019@163.com" <13621160019@163.com> Date: Sat, 27 Nov 2021 21:15:43 +0800 Subject: [PATCH] added access control to meter in api and admin --- .../combinedequipmentparameter.controller.js | 19 ++++++++++-- .../datasource/datasource.controller.js | 3 +- .../settings/datasource/point.controller.js | 3 +- .../distributioncircuitpoint.controller.js | 19 ++++++++++-- .../equipmentparameter.controller.js | 17 +++++++++-- .../settings/meter/meter.controller.js | 13 ++++++-- .../settings/meter/meterpoint.controller.js | 29 +++++++++++------- .../settings/sensor/sensorpoint.controller.js | 19 ++++++++++-- .../shopfloor/shopfloorpoint.controller.js | 18 +++++++++-- .../settings/space/spacepoint.controller.js | 18 +++++++++-- .../settings/store/storepoint.controller.js | 18 +++++++++-- .../settings/tenant/tenantpoint.controller.js | 18 +++++++++-- .../settings/datasource/datasource.service.js | 2 +- .../settings/meter/meterpoint.service.js | 10 +++---- myems-api/MyEMS.postman_collection.json | 30 +++++++++++++++++-- myems-api/README.md | 14 ++++----- myems-api/core/meter.py | 3 ++ 17 files changed, 201 insertions(+), 52 deletions(-) diff --git a/admin/app/controllers/settings/combinedequipment/combinedequipmentparameter.controller.js b/admin/app/controllers/settings/combinedequipment/combinedequipmentparameter.controller.js index c52bef8f..5455780a 100644 --- a/admin/app/controllers/settings/combinedequipment/combinedequipmentparameter.controller.js +++ b/admin/app/controllers/settings/combinedequipment/combinedequipmentparameter.controller.js @@ -1,6 +1,19 @@ 'use strict'; -app.controller('CombinedEquipmentParameterController', function ($scope, $uibModal, $translate, MeterService, VirtualMeterService, OfflineMeterService, CombinedEquipmentParameterService, CombinedEquipmentService, PointService, toaster, SweetAlert) { +app.controller('CombinedEquipmentParameterController', function ( + $scope, + $window, + $uibModal, + $translate, + MeterService, + VirtualMeterService, + OfflineMeterService, + CombinedEquipmentParameterService, + CombinedEquipmentService, + PointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentCombinedEquipment = { selected: undefined }; $scope.is_show_add_parameter = false; $scope.combinedequipments = []; @@ -36,7 +49,6 @@ app.controller('CombinedEquipmentParameterController', function ($scope, $uibMod }; $scope.addCombinedEquipmentParameter = function () { - var modalInstance = $uibModal.open({ templateUrl: 'views/settings/combinedequipment/combinedequipmentparameter.model.html', controller: 'ModalAddCombinedEquipmentParameterCtrl', @@ -250,7 +262,8 @@ app.controller('CombinedEquipmentParameterController', function ($scope, $uibMod }; $scope.getAllPoints = function () { - PointService.getAllPoints(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getAllPoints(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/datasource/datasource.controller.js b/admin/app/controllers/settings/datasource/datasource.controller.js index 45e5df29..bb26dec2 100644 --- a/admin/app/controllers/settings/datasource/datasource.controller.js +++ b/admin/app/controllers/settings/datasource/datasource.controller.js @@ -1,6 +1,7 @@ 'use strict'; -app.controller('DataSourceController', function($scope, +app.controller('DataSourceController', function( + $scope, $window, $uibModal, $translate, diff --git a/admin/app/controllers/settings/datasource/point.controller.js b/admin/app/controllers/settings/datasource/point.controller.js index 83ec5913..e426df06 100644 --- a/admin/app/controllers/settings/datasource/point.controller.js +++ b/admin/app/controllers/settings/datasource/point.controller.js @@ -1,6 +1,7 @@ 'use strict'; -app.controller('PointController', function($scope, +app.controller('PointController', function( + $scope, $window, $uibModal, $translate, diff --git a/admin/app/controllers/settings/distributionsystem/distributioncircuitpoint.controller.js b/admin/app/controllers/settings/distributionsystem/distributioncircuitpoint.controller.js index 8b5f8aaf..b7a63720 100644 --- a/admin/app/controllers/settings/distributionsystem/distributioncircuitpoint.controller.js +++ b/admin/app/controllers/settings/distributionsystem/distributioncircuitpoint.controller.js @@ -1,9 +1,21 @@ 'use strict'; -app.controller('DistributionCircuitPointController', function ($scope, $timeout, $translate, DistributionCircuitService, DataSourceService, PointService, DistributionCircuitPointService, toaster, SweetAlert) { +app.controller('DistributionCircuitPointController', function ( + $scope, + $window, + $timeout, + $translate, + DistributionCircuitService, + DataSourceService, + PointService, + DistributionCircuitPointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentDistributionCircuit = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -17,7 +29,8 @@ app.controller('DistributionCircuitPointController', function ($scope, $timeout, }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/equipment/equipmentparameter.controller.js b/admin/app/controllers/settings/equipment/equipmentparameter.controller.js index 17ae48d8..09a9a133 100644 --- a/admin/app/controllers/settings/equipment/equipmentparameter.controller.js +++ b/admin/app/controllers/settings/equipment/equipmentparameter.controller.js @@ -1,6 +1,18 @@ 'use strict'; -app.controller('EquipmentParameterController', function($scope, $uibModal, $translate, MeterService, VirtualMeterService, OfflineMeterService, EquipmentParameterService, EquipmentService, PointService, toaster,SweetAlert) { +app.controller('EquipmentParameterController', function( + $scope, + $window, + $uibModal, + $translate, + MeterService, + VirtualMeterService, + OfflineMeterService, + EquipmentParameterService, + EquipmentService, + PointService, + toaster,SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentEquipment = {selected:undefined}; $scope.is_show_add_parameter = false; $scope.equipments = []; @@ -251,7 +263,8 @@ app.controller('EquipmentParameterController', function($scope, $uibModal, $tran }; $scope.getAllPoints = function() { - PointService.getAllPoints(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getAllPoints(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/meter/meter.controller.js b/admin/app/controllers/settings/meter/meter.controller.js index 747c3bbe..9f43df25 100644 --- a/admin/app/controllers/settings/meter/meter.controller.js +++ b/admin/app/controllers/settings/meter/meter.controller.js @@ -1,7 +1,16 @@ 'use strict'; -app.controller('MeterController', function($scope, $translate, $uibModal, MeterService, CategoryService, CostCenterService, EnergyItemService,toaster, SweetAlert) { - +app.controller('MeterController', function($scope, + $window, + $translate, + $uibModal, + MeterService, + CategoryService, + CostCenterService, + EnergyItemService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.getAllCostCenters = function() { CostCenterService.getAllCostCenters(function (response) { if (angular.isDefined(response.status) && response.status === 200) { diff --git a/admin/app/controllers/settings/meter/meterpoint.controller.js b/admin/app/controllers/settings/meter/meterpoint.controller.js index fa0f697b..44e6fb38 100644 --- a/admin/app/controllers/settings/meter/meterpoint.controller.js +++ b/admin/app/controllers/settings/meter/meterpoint.controller.js @@ -1,14 +1,20 @@ 'use strict'; -app.controller('MeterPointController', function ($scope, $timeout, $translate, - MeterService, - DataSourceService, - PointService, - MeterPointService, - toaster) { +app.controller('MeterPointController', function ( + $scope, + $window, + $timeout, + $translate, + MeterService, + DataSourceService, + PointService, + MeterPointService, + toaster) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentMeter = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -22,7 +28,8 @@ app.controller('MeterPointController', function ($scope, $timeout, $translate, }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { @@ -69,7 +76,8 @@ app.controller('MeterPointController', function ($scope, $timeout, $translate, $scope.pairPoint = function (dragEl, dropEl) { var pointid = angular.element('#' + dragEl).scope().point.id; var meterid = $scope.currentMeter.id; - MeterPointService.addPair(meterid, pointid, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + MeterPointService.addPair(meterid, pointid, headers, function (response) { if (angular.isDefined(response.status) && response.status === 201) { toaster.pop({ type: "success", @@ -95,7 +103,8 @@ app.controller('MeterPointController', function ($scope, $timeout, $translate, } var meterpointid = angular.element('#' + dragEl).scope().meterpoint.id; var meterid = $scope.currentMeter.id; - MeterPointService.deletePair(meterid, meterpointid, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + MeterPointService.deletePair(meterid, meterpointid, headers, function (response) { if (angular.isDefined(response.status) && response.status === 204) { toaster.pop({ type: "success", diff --git a/admin/app/controllers/settings/sensor/sensorpoint.controller.js b/admin/app/controllers/settings/sensor/sensorpoint.controller.js index 3ba13fd3..c2b6839c 100644 --- a/admin/app/controllers/settings/sensor/sensorpoint.controller.js +++ b/admin/app/controllers/settings/sensor/sensorpoint.controller.js @@ -1,9 +1,21 @@ 'use strict'; -app.controller('SensorPointController', function ($scope, $timeout, $translate, SensorService, DataSourceService, PointService, SensorPointService, toaster, SweetAlert) { +app.controller('SensorPointController', function ( + $scope, + $window, + $timeout, + $translate, + SensorService, + DataSourceService, + PointService, + SensorPointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentSensor = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -18,7 +30,8 @@ app.controller('SensorPointController', function ($scope, $timeout, $translate, }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/shopfloor/shopfloorpoint.controller.js b/admin/app/controllers/settings/shopfloor/shopfloorpoint.controller.js index a88ea9f1..09eb88a0 100644 --- a/admin/app/controllers/settings/shopfloor/shopfloorpoint.controller.js +++ b/admin/app/controllers/settings/shopfloor/shopfloorpoint.controller.js @@ -1,9 +1,20 @@ 'use strict'; -app.controller('ShopfloorPointController', function ($scope, $translate, ShopfloorService, DataSourceService, PointService, ShopfloorPointService, toaster, SweetAlert) { +app.controller('ShopfloorPointController', function ( + $scope, + $window, + $translate, + ShopfloorService, + DataSourceService, + PointService, + ShopfloorPointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentShopfloor = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -17,7 +28,8 @@ app.controller('ShopfloorPointController', function ($scope, $translate, Shopflo }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/space/spacepoint.controller.js b/admin/app/controllers/settings/space/spacepoint.controller.js index cec6de57..c1b50d52 100644 --- a/admin/app/controllers/settings/space/spacepoint.controller.js +++ b/admin/app/controllers/settings/space/spacepoint.controller.js @@ -1,6 +1,16 @@ 'use strict'; -app.controller('SpacePointController', function ($scope, $translate, SpaceService, DataSourceService, PointService, SpacePointService, toaster, SweetAlert) { +app.controller('SpacePointController', function ( + $scope, + $window, + $translate, + SpaceService, + DataSourceService, + PointService, + SpacePointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.spaces = []; $scope.currentSpaceID = 1; $scope.spacepoints = []; @@ -42,7 +52,8 @@ app.controller('SpacePointController', function ($scope, $translate, SpaceServic }; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -56,7 +67,8 @@ app.controller('SpacePointController', function ($scope, $translate, SpaceServic }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/store/storepoint.controller.js b/admin/app/controllers/settings/store/storepoint.controller.js index 17cc3c0e..d239d6c5 100644 --- a/admin/app/controllers/settings/store/storepoint.controller.js +++ b/admin/app/controllers/settings/store/storepoint.controller.js @@ -1,9 +1,20 @@ 'use strict'; -app.controller('StorePointController', function ($scope, $translate, StoreService, DataSourceService, PointService, StorePointService, toaster, SweetAlert) { +app.controller('StorePointController', function ( + $window, + $scope, + $translate, + StoreService, + DataSourceService, + PointService, + StorePointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentStore = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -17,7 +28,8 @@ app.controller('StorePointController', function ($scope, $translate, StoreServic }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/controllers/settings/tenant/tenantpoint.controller.js b/admin/app/controllers/settings/tenant/tenantpoint.controller.js index b29505ee..d8c687e2 100644 --- a/admin/app/controllers/settings/tenant/tenantpoint.controller.js +++ b/admin/app/controllers/settings/tenant/tenantpoint.controller.js @@ -1,9 +1,20 @@ 'use strict'; -app.controller('TenantPointController', function ($scope, $translate, TenantService, DataSourceService, PointService, TenantPointService, toaster, SweetAlert) { +app.controller('TenantPointController', function ( + $scope, + $window, + $translate, + TenantService, + DataSourceService, + PointService, + TenantPointService, + toaster, + SweetAlert) { + $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.currentTenant = {selected:undefined}; $scope.getAllDataSources = function () { - DataSourceService.getAllDataSources(function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + DataSourceService.getAllDataSources(headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.datasources = response.data; if ($scope.datasources.length > 0) { @@ -17,7 +28,8 @@ app.controller('TenantPointController', function ($scope, $translate, TenantServ }; $scope.getPointsByDataSourceID = function (id) { - PointService.getPointsByDataSourceID(id, function (response) { + let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token }; + PointService.getPointsByDataSourceID(id, headers, function (response) { if (angular.isDefined(response.status) && response.status === 200) { $scope.points = response.data; } else { diff --git a/admin/app/services/settings/datasource/datasource.service.js b/admin/app/services/settings/datasource/datasource.service.js index f33486c0..b3e88a92 100644 --- a/admin/app/services/settings/datasource/datasource.service.js +++ b/admin/app/services/settings/datasource/datasource.service.js @@ -2,7 +2,7 @@ app.factory('DataSourceService', function($http) { return { getAllDataSources:function(headers, callback){ - $http.get(getAPI()+'datasources', {headers}) + $http.get(getAPI() + 'datasources', {headers}) .then(function (response) { callback(response); }, function (response) { diff --git a/admin/app/services/settings/meter/meterpoint.service.js b/admin/app/services/settings/meter/meterpoint.service.js index e9184851..3c1ebf28 100644 --- a/admin/app/services/settings/meter/meterpoint.service.js +++ b/admin/app/services/settings/meter/meterpoint.service.js @@ -1,8 +1,8 @@ 'use strict'; app.factory('MeterPointService', function($http) { return { - addPair: function(meterID,pointID,callback) { - $http.post(getAPI()+'meters/'+meterID+'/points',{data:{'point_id':pointID}}) + addPair: function(meterID, pointID, headers, callback) { + $http.post(getAPI() + 'meters/' + meterID + '/points', {data:{'point_id':pointID}}, {headers}) .then(function (response) { callback(response); }, function (response) { @@ -10,8 +10,8 @@ app.factory('MeterPointService', function($http) { }); }, - deletePair: function(meterID,pointID, callback) { - $http.delete(getAPI()+'meters/'+meterID+'/points/'+pointID) + deletePair: function(meterID,pointID, headers, callback) { + $http.delete(getAPI() + 'meters/' + meterID + '/points/' + pointID, {headers}) .then(function (response) { callback(response); }, function (response) { @@ -19,7 +19,7 @@ app.factory('MeterPointService', function($http) { }); }, getPointsByMeterID: function(id, callback) { - $http.get(getAPI()+'meters/'+id+'/points') + $http.get(getAPI() + 'meters/' + id + '/points') .then(function (response) { callback(response); }, function (response) { diff --git a/myems-api/MyEMS.postman_collection.json b/myems-api/MyEMS.postman_collection.json index 14620963..af45e87a 100644 --- a/myems-api/MyEMS.postman_collection.json +++ b/myems-api/MyEMS.postman_collection.json @@ -3432,7 +3432,20 @@ "name": "POST Meter Point Relation", "request": { "method": "POST", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4 ", + "type": "text", + "description": "Any admin users' UUID" + }, + { + "key": "Token", + "value": "ee46c3c7ca148dcb76af23fd2431fd925d20d570c363dc8d478a3afa74a9c8743886cdaf8d37b94faa49210d9003a916313790c7818c2ab7e87647489aaabfb7", + "type": "text", + "description": "Login to get a valid token" + } + ], "body": { "mode": "raw", "raw": "{\"data\":{\"point_id\":\"3\"}}" @@ -3474,7 +3487,20 @@ "name": "DELETE Meter Point Relation", "request": { "method": "DELETE", - "header": [], + "header": [ + { + "key": "User-UUID", + "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4 ", + "type": "text", + "description": "Any admin users' UUID" + }, + { + "key": "Token", + "value": "ee46c3c7ca148dcb76af23fd2431fd925d20d570c363dc8d478a3afa74a9c8743886cdaf8d37b94faa49210d9003a916313790c7818c2ab7e87647489aaabfb7", + "type": "text", + "description": "Login to get a valid token" + } + ], "url": { "raw": "{{base_url}}/meters/1/points/3", "host": [ diff --git a/myems-api/README.md b/myems-api/README.md index 7a6dd830..b8c163dc 100644 --- a/myems-api/README.md +++ b/myems-api/README.md @@ -574,15 +574,15 @@ curl -i -X GET {{base_url}}/energycategories ``` * DELETE an Energy Category by ID ```bash -curl -i -X DELETE {{base_url}}/energycategories/{id} +curl -i -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: GET-TOKEN-AFTER-LOGIN" -X DELETE {{base_url}}/energycategories/{id} ``` * POST Create an Energy Category ```bash -curl -i -H "Content-Type: application/json" -X POST -d '{"data":{"name":"电","unit_of_measure":"kWh", "kgce":0.1229 , "kgco2e":0.8825}}' {{base_url}}/energycategories +curl -i -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: GET-TOKEN-AFTER-LOGIN" -H "Content-Type: application/json" -X POST -d '{"data":{"name":"电","unit_of_measure":"kWh", "kgce":0.1229 , "kgco2e":0.8825}}' {{base_url}}/energycategories ``` * PUT Update an Energy Category ```bash -curl -i -H "Content-Type: application/json" -X PUT -d '{"data":{"name":"电","unit_of_measure":"kWh", "kgce":0.1329 , "kgco2e":0.9825}}' {{base_url}}/energycategories/{id} +curl -i -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: GET-TOKEN-AFTER-LOGIN" -H "Content-Type: application/json" -X PUT -d '{"data":{"name":"电","unit_of_measure":"kWh", "kgce":0.1329 , "kgco2e":0.9825}}' {{base_url}}/energycategories/{id} ``` ### Energy Flow Diagram @@ -1053,11 +1053,11 @@ curl -i -X DELETE {{base_url}}/meters/{id} ``` * POST Create a Meter ```bash -curl -i -H "Content-Type: application/json" -X POST -d '{"data":{"name":"PM20", "energy_category_id":1, "hourly_low_limit":0.000, "hourly_high_limit":999.999, "is_counted":true, "cost_center_id":1, "energy_item_id":1, "master_meter_id":1, "description":"空调用电"}}' {{base_url}}/meters +curl -i -H "Content-Type: application/json" -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: 073b43c05dadd89b833c0595b81c49cb9c1a54ca52b024b301a001720e52c5bf3b95951d5c54766de1028d20301cbd2bb6ec3fb62f9e14d9658cbf3811fe6c93" -X POST -d '{"data":{"name":"PM20", "energy_category_id":1, "hourly_low_limit":0.000, "hourly_high_limit":999.999, "is_counted":true, "cost_center_id":1, "energy_item_id":1, "master_meter_id":1, "description":"空调用电"}}' {{base_url}}/meters ``` * PUT Update a Meter ```bash -curl -i -H "Content-Type: application/json" -X PUT -d '{"data":{"name":"PM20", "energy_category_id":1, "hourly_low_limit":0.000, "hourly_high_limit":999.999, "is_counted":true, "cost_center_id":1, "energy_item_id":1, "master_meter_id":1, "description":"空调用电"}}' {{base_url}}/meters/{id} +curl -i -H "Content-Type: application/json" -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: 073b43c05dadd89b833c0595b81c49cb9c1a54ca52b024b301a001720e52c5bf3b95951d5c54766de1028d20301cbd2bb6ec3fb62f9e14d9658cbf3811fe6c93" -X PUT -d '{"data":{"name":"PM20", "energy_category_id":1, "hourly_low_limit":0.000, "hourly_high_limit":999.999, "is_counted":true, "cost_center_id":1, "energy_item_id":1, "master_meter_id":1, "description":"空调用电"}}' {{base_url}}/meters/{id} ``` * GET All Submeters of Meter by ID ```bash @@ -1069,11 +1069,11 @@ curl -i -X GET {{base_url}}/meters/{id}/points ``` * POST Meter Point Relation ```bash -curl -i -H "Content-Type: application/json" -X POST -d '{"data":{"point_id":"3"}}' {{base_url}}/meters/{id}/points +curl -i -H "Content-Type: application/json" -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: 073b43c05dadd89b833c0595b81c49cb9c1a54ca52b024b301a001720e52c5bf3b95951d5c54766de1028d20301cbd2bb6ec3fb62f9e14d9658cbf3811fe6c93" -X POST -d '{"data":{"point_id":"3"}}' {{base_url}}/meters/{id}/points ``` * DELETE Meter Point Relation ```bash -curl -i -X DELETE {{base_url}}/meters/{id}/points/{pid} +curl -i -H "User-UUID: dcdb67d1-6116-4987-916f-6fc6cf2bc0e4" -H "Token: 073b43c05dadd89b833c0595b81c49cb9c1a54ca52b024b301a001720e52c5bf3b95951d5c54766de1028d20301cbd2bb6ec3fb62f9e14d9658cbf3811fe6c93" -X DELETE {{base_url}}/meters/{id}/points/{pid} ``` ### Notification diff --git a/myems-api/core/meter.py b/myems-api/core/meter.py index 5a5dd1a2..11812ea3 100644 --- a/myems-api/core/meter.py +++ b/myems-api/core/meter.py @@ -900,6 +900,7 @@ class MeterPointCollection: @user_logger def on_post(req, resp, id_): """Handles POST requests""" + access_control(req) try: raw_json = req.stream.read().decode('utf-8') except Exception as ex: @@ -967,6 +968,8 @@ class MeterPointItem: @staticmethod @user_logger def on_delete(req, resp, id_, pid): + """Handles DELETE requests""" + access_control(req) if not id_.isdigit() or int(id_) <= 0: raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', description='API.INVALID_METER_ID')