added access control to offline meter file
parent
d15fef3b52
commit
d5155c04b8
|
@ -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",
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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": [
|
||||||
|
|
|
@ -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')
|
||||||
|
|
Loading…
Reference in New Issue