added access control to offline meter file

pull/80/head
13621160019@163.com 2021-11-19 22:49:54 +08:00
parent d15fef3b52
commit d5155c04b8
8 changed files with 87 additions and 36 deletions

View File

@ -12,7 +12,8 @@ app.controller('OfflineMeterFileController', function(
$scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user")); $scope.cur_user = JSON.parse($window.localStorage.getItem("myems_admin_ui_current_user"));
$scope.getAllOfflineMeterFiles = function() { $scope.getAllOfflineMeterFiles = function() {
OfflineMeterFileService.getAllOfflineMeterFiles(function (response) { let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
OfflineMeterFileService.getAllOfflineMeterFiles(headers, function (response) {
if (angular.isDefined(response.status) && response.status === 200) { if (angular.isDefined(response.status) && response.status === 200) {
$scope.offlinemeterfiles = response.data; $scope.offlinemeterfiles = response.data;
} else { } else {
@ -54,7 +55,8 @@ app.controller('OfflineMeterFileController', function(
}; };
$scope.restoreOfflineMeterFile = function (offlinemeterfile) { $scope.restoreOfflineMeterFile = function (offlinemeterfile) {
OfflineMeterFileService.restoreOfflineMeterFile(offlinemeterfile, function (response) { let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
OfflineMeterFileService.restoreOfflineMeterFile(offlinemeterfile, headers, function (response) {
if (angular.isDefined(response.status) && response.status === 200) { if (angular.isDefined(response.status) && response.status === 200) {
toaster.pop({ toaster.pop({
type: "success", type: "success",
@ -88,7 +90,8 @@ app.controller('OfflineMeterFileController', function(
}, },
function(isConfirm) { function(isConfirm) {
if (isConfirm) { if (isConfirm) {
OfflineMeterFileService.deleteOfflineMeterFile(offlinemeterfile, function (response) { let headers = { "User-UUID": $scope.cur_user.uuid, "Token": $scope.cur_user.token };
OfflineMeterFileService.deleteOfflineMeterFile(offlinemeterfile, headers, function (response) {
if (angular.isDefined(response.status) && response.status === 204) { if (angular.isDefined(response.status) && response.status === 204) {
toaster.pop({ toaster.pop({
type: "success", type: "success",

View File

@ -9,7 +9,6 @@ app.factory('CostFileService', function($http) {
callback(response); callback(response);
}); });
}, },
addCostFile: function(costfile, headers, callback) { addCostFile: function(costfile, headers, callback) {
$http.post(getAPI()+'costfiles', {data:costfile}, {headers}) $http.post(getAPI()+'costfiles', {data:costfile}, {headers})
.then(function (response) { .then(function (response) {

View File

@ -9,7 +9,7 @@ app.factory('KnowledgeFileService', function ($http) {
callback(response); callback(response);
}); });
}, },
addKnowledgeFile: function (knowledgefile, headers, callback) { addKnowledgeFile: function (knowledgefile, headers, callback) {
$http.post(getAPI() + 'knowledgefiles', {data: knowledgefile}, {headers}) $http.post(getAPI() + 'knowledgefiles', {data: knowledgefile}, {headers})
.then(function (response) { .then(function (response) {

View File

@ -1,56 +1,48 @@
'use strict'; 'use strict';
app.factory('OfflineMeterFileService', function($http) { app.factory('OfflineMeterFileService', function($http) {
return { return {
getAllOfflineMeterFiles:function(callback){ getAllOfflineMeterFiles:function(headers, callback){
$http.get(getAPI()+'offlinemeterfiles') $http.get(getAPI()+'offlinemeterfiles', {headers})
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {
callback(response); callback(response);
}); });
}, },
searchOfflineMeterFiles: function(query, callback) { searchOfflineMeterFiles: function(query, headers, callback) {
$http.get(getAPI()+'offlinemeterfiles', { params: { q: query } }) $http.get(getAPI()+'offlinemeterfiles', { params: { q: query } }, {headers})
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {
callback(response); callback(response);
}); });
}, },
addOfflineMeterFile: function(offlinemeterfile, callback) { addOfflineMeterFile: function(offlinemeterfile, headers, callback) {
$http.post(getAPI()+'offlinemeterfiles',{data:offlinemeterfile}) $http.post(getAPI()+'offlinemeterfiles', {data:offlinemeterfile}, {headers})
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {
callback(response); callback(response);
}); });
}, },
editOfflineMeterFile: function(offlinemeterfile, callback) { restoreOfflineMeterFile: function (offlinemeterfile, headers, callback) {
$http.put(getAPI()+'offlinemeterfiles/'+offlinemeterfile.id,{data:offlinemeterfile}) $http.get(getAPI() + 'offlinemeterfiles/' + offlinemeterfile.id + '/restore', {headers})
.then(function (response) {
callback(response);
}, function (response) {
callback(response);
});
},
restoreOfflineMeterFile: function (offlinemeterfile, callback) {
$http.get(getAPI() + 'offlinemeterfiles/' + offlinemeterfile.id + '/restore')
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {
callback(response); callback(response);
}); });
}, },
deleteOfflineMeterFile: function(offlinemeterfile, callback) { deleteOfflineMeterFile: function(offlinemeterfile, headers, callback) {
$http.delete(getAPI()+'offlinemeterfiles/'+offlinemeterfile.id) $http.delete(getAPI()+'offlinemeterfiles/' + offlinemeterfile.id, {headers})
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {
callback(response); callback(response);
}); });
}, },
getOfflineMeterFile: function(id, callback) { getOfflineMeterFile: function(id, headers, callback) {
$http.get(getAPI()+'offlinemeterfiles/'+id) $http.get(getAPI()+'offlinemeterfiles/' + id, {headers})
.then(function (response) { .then(function (response) {
callback(response); callback(response);
}, function (response) { }, function (response) {

View File

@ -5,8 +5,7 @@
<uib-tabset> <uib-tabset>
<uib-tab heading="{{'KNOWLEDGEFILE.KNOWLEDGE_FILE_LIST' | translate}}"> <uib-tab heading="{{'KNOWLEDGEFILE.KNOWLEDGE_FILE_LIST' | translate}}">
<div class="panel-body" ng-controller="KnowledgeFileController"> <div class="panel-body" ng-controller="KnowledgeFileController">
<div id="dropzone1" class="dropzone" options="dzOptions" callbacks="dzCallbacks" <div id="dropzone1" class="dropzone" options="dzOptions" callbacks="dzCallbacks" ng-dropzone></div>
ng-dropzone></div>
<table class="table table-bordered table-hover" data-empty="There is no data" > <table class="table table-bordered table-hover" data-empty="There is no data" >
<thead> <thead>
<tr> <tr>

View File

@ -290,8 +290,7 @@
<uib-tab heading="{{'SETTING.OFFLINE_METER_FILE' | translate}}"> <uib-tab heading="{{'SETTING.OFFLINE_METER_FILE' | translate}}">
<div class="panel-body" ng-controller="OfflineMeterFileController"> <div class="panel-body" ng-controller="OfflineMeterFileController">
<div id="dropzone1" class="dropzone" options="dzOptions" callbacks="dzCallbacks" <div id="dropzone1" class="dropzone" options="dzOptions" callbacks="dzCallbacks" ng-dropzone></div>
ng-dropzone></div>
<table class="table table-bordered table-hover"> <table class="table table-bordered table-hover">
<thead> <thead>
<tr> <tr>

View File

@ -2880,12 +2880,14 @@
{ {
"key": "User_UUID", "key": "User_UUID",
"value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4", "value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4",
"type": "text" "type": "text",
"description": "Any admin users' UUID"
}, },
{ {
"key": "Token", "key": "Token",
"value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e", "value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e",
"type": "text" "type": "text",
"description": "Login to get a valid token"
} }
], ],
"body": { "body": {
@ -3518,7 +3520,20 @@
"name": "GET All Offline Meter Files", "name": "GET All Offline Meter Files",
"request": { "request": {
"method": "GET", "method": "GET",
"header": [], "header": [
{
"key": "User-UUID",
"value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4",
"description": "Any admin users' UUID",
"type": "text"
},
{
"key": "Token",
"value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e",
"description": "Login to get a valid token",
"type": "text"
}
],
"url": { "url": {
"raw": "{{base_url}}/offlinemeterfiles", "raw": "{{base_url}}/offlinemeterfiles",
"host": [ "host": [
@ -3535,7 +3550,20 @@
"name": "GET a Offline Meter File by ID", "name": "GET a Offline Meter File by ID",
"request": { "request": {
"method": "GET", "method": "GET",
"header": [], "header": [
{
"key": "User-UUID",
"value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4",
"type": "text",
"description": "Any admin users' UUID"
},
{
"key": "Token",
"value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e",
"type": "text",
"description": "Login to get a valid token"
}
],
"url": { "url": {
"raw": "{{base_url}}/offlinemeterfiles/1", "raw": "{{base_url}}/offlinemeterfiles/1",
"host": [ "host": [
@ -3591,7 +3619,20 @@
"name": "DELETE a Offline Meter File by ID", "name": "DELETE a Offline Meter File by ID",
"request": { "request": {
"method": "DELETE", "method": "DELETE",
"header": [], "header": [
{
"key": "User-UUID",
"value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4",
"type": "text",
"description": "Any admin users' UUID"
},
{
"key": "Token",
"value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e",
"type": "text",
"description": "Login to get a valid token"
}
],
"url": { "url": {
"raw": "{{base_url}}/offlinemeterfiles/1", "raw": "{{base_url}}/offlinemeterfiles/1",
"host": [ "host": [
@ -3609,7 +3650,20 @@
"name": "Rstore an Offline Meter File by ID", "name": "Rstore an Offline Meter File by ID",
"request": { "request": {
"method": "GET", "method": "GET",
"header": [], "header": [
{
"key": "User-UUID",
"value": "dcdb67d1-6116-4987-916f-6fc6cf2bc0e4",
"type": "text",
"description": "Any admin users' UUID"
},
{
"key": "Token",
"value": "d2506282920bd7f1fb5db68605324bd7b8c6c305d84dcd43d43edfba6908136c4e468eca553c72f0211b2ad44fedb71c2f5c901816e5de828fa21cfb88a2552e",
"type": "text",
"description": "Login to get a valid token"
}
],
"url": { "url": {
"raw": "{{base_url}}/offlinemeterfiles/1/restore", "raw": "{{base_url}}/offlinemeterfiles/1/restore",
"host": [ "host": [

View File

@ -5,7 +5,7 @@ import config
import uuid import uuid
from datetime import datetime, timezone, timedelta from datetime import datetime, timezone, timedelta
import os import os
from core.useractivity import user_logger from core.useractivity import user_logger, access_control
class OfflineMeterFileCollection: class OfflineMeterFileCollection:
@ -20,6 +20,7 @@ class OfflineMeterFileCollection:
@staticmethod @staticmethod
def on_get(req, resp): def on_get(req, resp):
access_control(req)
cnx = mysql.connector.connect(**config.myems_historical_db) cnx = mysql.connector.connect(**config.myems_historical_db)
cursor = cnx.cursor() cursor = cnx.cursor()
@ -52,6 +53,7 @@ class OfflineMeterFileCollection:
@user_logger @user_logger
def on_post(req, resp): def on_post(req, resp):
"""Handles POST requests""" """Handles POST requests"""
access_control(req)
try: try:
upload = req.get_param('file') upload = req.get_param('file')
# Read upload file as binary # Read upload file as binary
@ -159,6 +161,7 @@ class OfflineMeterFileItem:
@staticmethod @staticmethod
def on_get(req, resp, id_): def on_get(req, resp, id_):
access_control(req)
if not id_.isdigit() or int(id_) <= 0: if not id_.isdigit() or int(id_) <= 0:
raise falcon.HTTPError(falcon.HTTP_400, raise falcon.HTTPError(falcon.HTTP_400,
title='API.BAD_REQUEST', title='API.BAD_REQUEST',
@ -194,6 +197,7 @@ class OfflineMeterFileItem:
@staticmethod @staticmethod
@user_logger @user_logger
def on_delete(req, resp, id_): def on_delete(req, resp, id_):
access_control(req)
if not id_.isdigit() or int(id_) <= 0: if not id_.isdigit() or int(id_) <= 0:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_OFFLINE_METER_FILE_ID') description='API.INVALID_OFFLINE_METER_FILE_ID')
@ -244,6 +248,7 @@ class OfflineMeterFileRestore:
@staticmethod @staticmethod
def on_get(req, resp, id_): def on_get(req, resp, id_):
access_control(req)
if not id_.isdigit() or int(id_) <= 0: if not id_.isdigit() or int(id_) <= 0:
raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST', raise falcon.HTTPError(falcon.HTTP_400, title='API.BAD_REQUEST',
description='API.INVALID_OFFLINE_METER_FILE_ID') description='API.INVALID_OFFLINE_METER_FILE_ID')