diff --git a/app/v1/applications/controller.js b/app/v1/applications/controller.js index cee88d5a..3edc23ae 100644 --- a/app/v1/applications/controller.js +++ b/app/v1/applications/controller.js @@ -15,6 +15,9 @@ function get (req, res, next) { let chosenFlow; //to be determined if (req.query.id) { //filter by id + if (Number.isNaN(Number(req.query.id))) { + return res.parcel.setStatus(400).setMessage("id must be an integer").deliver(); + } chosenFlow = helper.createAppInfoFlow('idFilter', req.query.id); } else if (req.query.uuid) { //filter by app uuid @@ -75,6 +78,7 @@ function get (req, res, next) { //TODO: emailing system for messaging the developer about the approval status change function actionPost (req, res, next) { helper.validateActionPost(req, res); + helper.checkIdIntegerBody(req, res); if (res.parcel.message) { return res.parcel.deliver(); } @@ -152,6 +156,7 @@ function hybridPost (req, res, next) { function rpcEncryptionPut (req, res, next) { helper.validateRPCEncryptionPut(req, res); + helper.checkIdIntegerBody(req, res); if (res.parcel.message) { return res.parcel.deliver(); } @@ -270,6 +275,7 @@ function passthroughPost (req, res, next) { function putServicePermission (req, res, next) { helper.validateServicePermissionPut(req, res); + helper.checkIdIntegerBody(req, res); if (res.parcel.message) { return res.parcel.deliver(); } diff --git a/app/v1/applications/helper.js b/app/v1/applications/helper.js index a498249b..c09ee545 100644 --- a/app/v1/applications/helper.js +++ b/app/v1/applications/helper.js @@ -13,6 +13,12 @@ const certificates = require('../certificates/controller.js'); const certUtil = require('../helpers/certificates.js'); //validation functions +function checkIdIntegerBody (req, res) { + if (Number.isNaN(Number(req.body.id))) { + res.parcel.setStatus(400).setMessage("id must be an integer"); + } + return; +} function validateActionPost (req, res) { if (!req.body.id || !req.body.approval_status) { @@ -434,6 +440,7 @@ module.exports = { validateFunctionalGroupPut: validateFunctionalGroupPut, validateUpdateAppCertificate: validateUpdateAppCertificate, validateWebHook: validateWebHook, + checkIdIntegerBody: checkIdIntegerBody, storeAppCertificates: storeAppCertificates, createFailedAppsCert: createFailedAppsCert, createAppInfoFlow: createAppInfoFlow, diff --git a/app/v1/groups/controller.js b/app/v1/groups/controller.js index 6bab4320..81c22351 100644 --- a/app/v1/groups/controller.js +++ b/app/v1/groups/controller.js @@ -21,6 +21,9 @@ function get (req, res, next) { ], {method: 'waterfall'}); } else if (req.query.id) { //filter by id + if (Number.isNaN(Number(req.query.id))) { + return res.parcel.setStatus(400).setMessage("id must be an integer").deliver(); + } chosenFlow = helper.createFuncGroupFlow('idFilter', req.query.id, true, isProduction); } else { //get all apps at the high level, filtering in PRODUCTION or STAGING mode diff --git a/app/v1/messages/controller.js b/app/v1/messages/controller.js index c1c9acc9..fea847c3 100644 --- a/app/v1/messages/controller.js +++ b/app/v1/messages/controller.js @@ -18,6 +18,9 @@ function getInfo (req, res, next) { chosenFlow = helper.makeCategoryTemplateFlow(); } else if (req.query.id) { //get messages of a specific id. this is the 'detailed' mode + if (Number.isNaN(Number(req.query.id))) { + return res.parcel.setStatus(400).setMessage("id must be an integer").deliver(); + } chosenFlow = helper.getMessageDetailsFlow(req.query.id); } else { //get all message info at the highest level, filtering in PRODUCTION or STAGING mode diff --git a/app/v1/module-config/controller.js b/app/v1/module-config/controller.js index 34874c35..1f3ac357 100644 --- a/app/v1/module-config/controller.js +++ b/app/v1/module-config/controller.js @@ -18,6 +18,9 @@ function get(req, res, next) { let chosenFlow; if (req.query.id) { //get module config of a specific id + if (Number.isNaN(Number(req.query.id))) { + return res.parcel.setStatus(400).setMessage("id must be an integer").deliver(); + } chosenFlow = helper.getModuleConfigFlow('id', req.query.id); } else { //get the most recent module config object chosenFlow = helper.getModuleConfigFlow('status', isProduction); @@ -31,6 +34,12 @@ function get(req, res, next) { .setMessage('Internal server error') .deliver(); } + if (!certController.openSSLEnabled) { // cert gen not enabled + data.forEach(obj => { + delete obj.certificate; + delete obj.private_key + }) + } return res.parcel .setStatus(200) .setData( diff --git a/app/v1/policy/model.js b/app/v1/policy/model.js index 56d86563..5f167e26 100644 --- a/app/v1/policy/model.js +++ b/app/v1/policy/model.js @@ -4,6 +4,7 @@ const settings = require('../../../settings.js'); const sqlApp = require('../applications/sql.js'); const _ = require('lodash'); const vehicleDataHelper = require('../vehicle-data/helper.js'); +const certController = require('../certificates/controller'); //module config @@ -27,7 +28,7 @@ function transformModuleConfig (isProduction, useLongUuids = false, info, next) concatPort = ":" + settings.policyServerPort; } - if(base.certificate && base.private_key){ + if(certController.openSSLEnabled && base.certificate && base.private_key){ base.certificate += '\n' + base.private_key; } else { diff --git a/app/v1/vehicle-data/controller.js b/app/v1/vehicle-data/controller.js index 6c63ed85..d7378bc6 100644 --- a/app/v1/vehicle-data/controller.js +++ b/app/v1/vehicle-data/controller.js @@ -12,6 +12,10 @@ function get(req, res, next) { return getTemplate(req, res); } + if (req.query.id && Number.isNaN(Number(req.query.id))) { + return res.parcel.setStatus(400).setMessage("id must be an integer").deliver(); + } + async.waterfall( [ function(cb) { diff --git a/migrations/20210120182618-seat-occupancy-0262.js b/migrations/20210120182618-seat-occupancy-0262.js new file mode 100644 index 00000000..3f2bf764 --- /dev/null +++ b/migrations/20210120182618-seat-occupancy-0262.js @@ -0,0 +1,53 @@ +'use strict'; + +var dbm; +var type; +var seed; +var fs = require('fs'); +var path = require('path'); +var Promise; + +/** + * We receive the dbmigrate dependency from dbmigrate initially. + * This enables us to not have to rely on NODE_PATH. + */ +exports.setup = function(options, seedLink) { + dbm = options.dbmigrate; + type = dbm.dataType; + seed = seedLink; + Promise = options.Promise; +}; + +exports.up = function(db) { + var filePath = path.join(__dirname, 'sqls', '20210120182618-seat-occupancy-0262-up.sql'); + return new Promise( function( resolve, reject ) { + fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){ + if (err) return reject(err); + console.log('received data: ' + data); + + resolve(data); + }); + }) + .then(function(data) { + return db.runSql(data); + }); +}; + +exports.down = function(db) { + var filePath = path.join(__dirname, 'sqls', '20210120182618-seat-occupancy-0262-down.sql'); + return new Promise( function( resolve, reject ) { + fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){ + if (err) return reject(err); + console.log('received data: ' + data); + + resolve(data); + }); + }) + .then(function(data) { + return db.runSql(data); + }); +}; + +exports._meta = { + "version": 1 +}; diff --git a/migrations/20210129160807-climate-data-0269.js b/migrations/20210129160807-climate-data-0269.js new file mode 100644 index 00000000..a5c4ada9 --- /dev/null +++ b/migrations/20210129160807-climate-data-0269.js @@ -0,0 +1,53 @@ +'use strict'; + +var dbm; +var type; +var seed; +var fs = require('fs'); +var path = require('path'); +var Promise; + +/** + * We receive the dbmigrate dependency from dbmigrate initially. + * This enables us to not have to rely on NODE_PATH. + */ +exports.setup = function(options, seedLink) { + dbm = options.dbmigrate; + type = dbm.dataType; + seed = seedLink; + Promise = options.Promise; +}; + +exports.up = function(db) { + var filePath = path.join(__dirname, 'sqls', '20210129160807-climate-data-0269-up.sql'); + return new Promise( function( resolve, reject ) { + fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){ + if (err) return reject(err); + console.log('received data: ' + data); + + resolve(data); + }); + }) + .then(function(data) { + return db.runSql(data); + }); +}; + +exports.down = function(db) { + var filePath = path.join(__dirname, 'sqls', '20210129160807-climate-data-0269-down.sql'); + return new Promise( function( resolve, reject ) { + fs.readFile(filePath, {encoding: 'utf-8'}, function(err,data){ + if (err) return reject(err); + console.log('received data: ' + data); + + resolve(data); + }); + }) + .then(function(data) { + return db.runSql(data); + }); +}; + +exports._meta = { + "version": 1 +}; diff --git a/migrations/sqls/20210120182618-seat-occupancy-0262-down.sql b/migrations/sqls/20210120182618-seat-occupancy-0262-down.sql new file mode 100644 index 00000000..27ca2881 --- /dev/null +++ b/migrations/sqls/20210120182618-seat-occupancy-0262-down.sql @@ -0,0 +1 @@ +/** Intentionally left blank. If an OEM runs a down migration, we do not want to delete functional groups that may have been updated. **/ \ No newline at end of file diff --git a/migrations/sqls/20210120182618-seat-occupancy-0262-up.sql b/migrations/sqls/20210120182618-seat-occupancy-0262-up.sql new file mode 100644 index 00000000..cb985dbd --- /dev/null +++ b/migrations/sqls/20210120182618-seat-occupancy-0262-up.sql @@ -0,0 +1,92 @@ +-- DROP AFFECTED VIEWS -- +DROP VIEW IF EXISTS view_mapped_permissions_production; +DROP VIEW IF EXISTS view_mapped_permissions_staging; +DROP VIEW IF EXISTS view_mapped_permissions; +DROP VIEW IF EXISTS view_function_group_info; +-- END DROP OF VIEWS -- + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'GetVehicleData' AS rpc_name, 'seatOccupancy' AS parameter +FROM function_group_info +WHERE property_name = 'DrivingCharacteristics-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'DrivingCharacteristics-3' + AND parameter = 'seatOccupancy' + AND rpc_name = 'GetVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'OnVehicleData' AS rpc_name, 'seatOccupancy' AS parameter +FROM function_group_info +WHERE property_name = 'DrivingCharacteristics-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'DrivingCharacteristics-3' + AND parameter = 'seatOccupancy' + AND rpc_name = 'OnVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'SubscribeVehicleData' AS rpc_name, 'seatOccupancy' AS parameter +FROM function_group_info +WHERE property_name = 'DrivingCharacteristics-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'DrivingCharacteristics-3' + AND parameter = 'seatOccupancy' + AND rpc_name = 'SubscribeVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'UnsubscribeVehicleData' AS rpc_name, 'seatOccupancy' AS parameter +FROM function_group_info +WHERE property_name = 'DrivingCharacteristics-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'DrivingCharacteristics-3' + AND parameter = 'seatOccupancy' + AND rpc_name = 'UnsubscribeVehicleData' + ); + +-- RECREATE AFFECTED VIEWS -- +CREATE OR REPLACE VIEW view_function_group_info AS +SELECT function_group_info.* +FROM ( +SELECT property_name, status, max(id) AS id + FROM function_group_info + GROUP BY property_name, status +) AS vfgi +INNER JOIN function_group_info ON vfgi.id = function_group_info.id; + +CREATE OR REPLACE VIEW view_mapped_permissions AS +SELECT function_group_id AS id, permission_name AS name, status, property_name, is_deleted +FROM view_function_group_info +INNER JOIN function_group_hmi_levels +ON view_function_group_info.id = function_group_hmi_levels.function_group_id +WHERE is_deleted=false +UNION +SELECT function_group_id AS id, parameter AS name, status, property_name, is_deleted +FROM view_function_group_info +INNER JOIN function_group_parameters +ON view_function_group_info.id = function_group_parameters.function_group_id +WHERE is_deleted=false; + +CREATE OR REPLACE VIEW view_mapped_permissions_staging AS +SELECT view_mapped_permissions.* +FROM view_mapped_permissions +INNER JOIN ( + SELECT max(id) AS id, property_name + FROM view_function_group_info + GROUP BY property_name +) fgi +ON view_mapped_permissions.id = fgi.id; + +CREATE OR REPLACE VIEW view_mapped_permissions_production AS +SELECT view_mapped_permissions.* FROM view_mapped_permissions +WHERE status = 'PRODUCTION'; +-- END VIEW RECREATION -- \ No newline at end of file diff --git a/migrations/sqls/20210129160807-climate-data-0269-down.sql b/migrations/sqls/20210129160807-climate-data-0269-down.sql new file mode 100644 index 00000000..27ca2881 --- /dev/null +++ b/migrations/sqls/20210129160807-climate-data-0269-down.sql @@ -0,0 +1 @@ +/** Intentionally left blank. If an OEM runs a down migration, we do not want to delete functional groups that may have been updated. **/ \ No newline at end of file diff --git a/migrations/sqls/20210129160807-climate-data-0269-up.sql b/migrations/sqls/20210129160807-climate-data-0269-up.sql new file mode 100644 index 00000000..9aeaa1fa --- /dev/null +++ b/migrations/sqls/20210129160807-climate-data-0269-up.sql @@ -0,0 +1,92 @@ +-- DROP AFFECTED VIEWS -- +DROP VIEW IF EXISTS view_mapped_permissions_production; +DROP VIEW IF EXISTS view_mapped_permissions_staging; +DROP VIEW IF EXISTS view_mapped_permissions; +DROP VIEW IF EXISTS view_function_group_info; +-- END DROP OF VIEWS -- + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'GetVehicleData' AS rpc_name, 'climateData' AS parameter +FROM function_group_info +WHERE property_name = 'VehicleInfo-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'VehicleInfo-3' + AND parameter = 'climateData' + AND rpc_name = 'GetVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'OnVehicleData' AS rpc_name, 'climateData' AS parameter +FROM function_group_info +WHERE property_name = 'VehicleInfo-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'VehicleInfo-3' + AND parameter = 'climateData' + AND rpc_name = 'OnVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'SubscribeVehicleData' AS rpc_name, 'climateData' AS parameter +FROM function_group_info +WHERE property_name = 'VehicleInfo-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'VehicleInfo-3' + AND parameter = 'climateData' + AND rpc_name = 'SubscribeVehicleData' + ); + +INSERT INTO function_group_parameters(function_group_id, rpc_name, parameter) +SELECT id AS function_group_id, 'UnsubscribeVehicleData' AS rpc_name, 'climateData' AS parameter +FROM function_group_info +WHERE property_name = 'VehicleInfo-3' + AND NOT EXISTS( + SELECT 1 + FROM function_group_parameters + WHERE property_name = 'VehicleInfo-3' + AND parameter = 'climateData' + AND rpc_name = 'UnsubscribeVehicleData' + ); + +-- RECREATE AFFECTED VIEWS -- +CREATE OR REPLACE VIEW view_function_group_info AS +SELECT function_group_info.* +FROM ( +SELECT property_name, status, max(id) AS id + FROM function_group_info + GROUP BY property_name, status +) AS vfgi +INNER JOIN function_group_info ON vfgi.id = function_group_info.id; + +CREATE OR REPLACE VIEW view_mapped_permissions AS +SELECT function_group_id AS id, permission_name AS name, status, property_name, is_deleted +FROM view_function_group_info +INNER JOIN function_group_hmi_levels +ON view_function_group_info.id = function_group_hmi_levels.function_group_id +WHERE is_deleted=false +UNION +SELECT function_group_id AS id, parameter AS name, status, property_name, is_deleted +FROM view_function_group_info +INNER JOIN function_group_parameters +ON view_function_group_info.id = function_group_parameters.function_group_id +WHERE is_deleted=false; + +CREATE OR REPLACE VIEW view_mapped_permissions_staging AS +SELECT view_mapped_permissions.* +FROM view_mapped_permissions +INNER JOIN ( + SELECT max(id) AS id, property_name + FROM view_function_group_info + GROUP BY property_name +) fgi +ON view_mapped_permissions.id = fgi.id; + +CREATE OR REPLACE VIEW view_mapped_permissions_production AS +SELECT view_mapped_permissions.* FROM view_mapped_permissions +WHERE status = 'PRODUCTION'; +-- END VIEW RECREATION -- \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 851fdadf..085f0664 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "sdl_policy_server", - "version": "2.10.0", + "version": "2.11.0", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -1804,17 +1804,6 @@ "integrity": "sha512-+G7P8jJmCHr+S+cLfQxygbWhXy+8YTVGzAkpEbcLo2mLoL7tij/VG41QSHACSf5QgYRhMZYHuNc6drJaO0Da+w==", "dev": true }, - "ansi-styles": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.2.1.tgz", - "integrity": "sha512-9VGjrMsG1vePxcSweQsN20KY/c4zN0h9fLjqAbwbPfahM3t+NL+M9HC8xeXG2I8pX5NoamTGNuomEUFI7fcUjA==", - "dev": true, - "optional": true, - "requires": { - "@types/color-name": "^1.1.1", - "color-convert": "^2.0.1" - } - }, "async": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/async/-/async-2.6.3.tgz", @@ -1861,34 +1850,6 @@ } } }, - "chalk": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", - "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", - "dev": true, - "optional": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "optional": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true, - "optional": true - }, "cssnano": { "version": "4.1.10", "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-4.1.10.tgz", @@ -1928,25 +1889,6 @@ "path-exists": "^4.0.0" } }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "optional": true - }, - "loader-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", - "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", - "dev": true, - "optional": true, - "requires": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" - } - }, "locate-path": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", @@ -2033,16 +1975,6 @@ "minipass": "^3.1.1" } }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "optional": true, - "requires": { - "has-flag": "^4.0.0" - } - }, "terser-webpack-plugin": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-2.3.8.tgz", @@ -2059,18 +1991,6 @@ "terser": "^4.6.12", "webpack-sources": "^1.4.3" } - }, - "vue-loader-v16": { - "version": "npm:vue-loader@16.0.0-beta.8", - "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.0.0-beta.8.tgz", - "integrity": "sha512-oouKUQWWHbSihqSD7mhymGPX1OQ4hedzAHyvm8RdyHh6m3oIvoRF+NM45i/bhNOlo8jCnuJhaSUf/6oDjv978g==", - "dev": true, - "optional": true, - "requires": { - "chalk": "^4.1.0", - "hash-sum": "^2.0.0", - "loader-utils": "^2.0.0" - } } } }, @@ -5136,24 +5056,24 @@ "dev": true }, "elliptic": { - "version": "6.5.3", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.3.tgz", - "integrity": "sha512-IMqzv5wNQf+E6aHeIqATs0tOLeOTwj1QKbRcS3jBbYkl5oLAserA8yJTT7/VyHUYG91PRmPyeQDObKLPpeS4dw==", + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "dev": true, "requires": { - "bn.js": "^4.4.0", - "brorand": "^1.0.1", + "bn.js": "^4.11.9", + "brorand": "^1.1.0", "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.0" + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" }, "dependencies": { "bn.js": { - "version": "4.11.9", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.11.9.tgz", - "integrity": "sha512-E6QoYqCKZfgatHTdHzs1RRKP7ip4vvm+EyRUeE2RF0NblwVvb0p6jSVeNTOFxPn26QXN2o6SMfNxKp6kU8zQaw==", + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "dev": true } } @@ -7016,9 +6936,9 @@ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "ini": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", - "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==" + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==" }, "inquirer": { "version": "7.3.3", @@ -13049,6 +12969,87 @@ } } }, + "vue-loader-v16": { + "version": "npm:vue-loader@16.2.0", + "resolved": "https://registry.npmjs.org/vue-loader/-/vue-loader-16.2.0.tgz", + "integrity": "sha512-TitGhqSQ61RJljMmhIGvfWzJ2zk9m1Qug049Ugml6QP3t0e95o0XJjk29roNEiPKJQBEi8Ord5hFuSuELzSp8Q==", + "dev": true, + "optional": true, + "requires": { + "chalk": "^4.1.0", + "hash-sum": "^2.0.0", + "loader-utils": "^2.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "optional": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "optional": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "optional": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "optional": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "optional": true + }, + "loader-utils": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.0.tgz", + "integrity": "sha512-rP4F0h2RaWSvPEkD7BLDFQnvSf+nK+wr3ESUjNTyAGobqrijmW92zc+SO6d4p4B1wh7+B/Jg1mkQe5NYUEHtHQ==", + "dev": true, + "optional": true, + "requires": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + } + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "optional": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "vue-resource": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/vue-resource/-/vue-resource-1.3.4.tgz", @@ -14431,9 +14432,9 @@ "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" }, "y18n": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", - "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==" + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.1.tgz", + "integrity": "sha512-wNcy4NvjMYL8gogWWYAO7ZFWFfHcbdbE57tZO8e4cbpj8tfUcwrwqSl3ad8HxpYWCdXcJUCeKKZS62Av1affwQ==" }, "yallist": { "version": "3.1.1", diff --git a/package.json b/package.json index dd3e0b17..9d7b4bee 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "sdl_policy_server", - "version": "2.10.0", + "version": "2.11.0", "license": "BSD-3-Clause", "description": "Integrates with SHAID to allow managing app permissions through policy tables", "author": "Livio", @@ -41,7 +41,7 @@ "cors": "^2.8.5", "cron": "1.3.0", "db-migrate": "^0.11.10", - "db-migrate-pg": "0.2.4", + "db-migrate-pg": "1.2.2", "dotenv": "4.0.0", "express": "4.16.0", "helmet": "^3.15.1",