@availity/api-core
Advanced tools
Comparing version 6.5.2 to 6.6.0
@@ -6,2 +6,20 @@ # Change Log | ||
# [6.6.0](https://github.com/Availity/sdk-js/compare/@availity/api-core@6.5.2...@availity/api-core@6.6.0) (2020-06-08) | ||
### Bug Fixes | ||
* **api-core:** fix org filtering when permission/resource not returned ([7b08f09](https://github.com/Availity/sdk-js/commit/7b08f09fcb7545818a6d3aaacf9c6eabb3969ba7)) | ||
* **api-core:** organization filtering fix for resource OR ([cb16c6a](https://github.com/Availity/sdk-js/commit/cb16c6a36fbf7d653c9ff70a0555981001c21606)) | ||
* **api-core:** organization permissions fix equal check, allow number ([6fc93c1](https://github.com/Availity/sdk-js/commit/6fc93c114523350cad0d37d8167b5047707c33a9)) | ||
### Features | ||
* **api-core:** add permission AND/OR logic to organization filter ([90acf02](https://github.com/Availity/sdk-js/commit/90acf029028413c9fb98443d136abb795295eb5c)) | ||
## [6.5.2](https://github.com/Availity/sdk-js/compare/@availity/api-core@6.5.1...@availity/api-core@6.5.2) (2020-06-04) | ||
@@ -8,0 +26,0 @@ |
@@ -95,3 +95,3 @@ "use strict"; | ||
var _postGet = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(data, config, additionalPostGetArgs) { | ||
var permissionIds, dataTemp, _yield$_get$call, organizationsData; | ||
var permissionIds, dataTemp, _yield$_get$call, organizationsData, organizations, limit, offset, totalCount, authorizedOrgs, authorizedFilteredOrgs; | ||
@@ -103,3 +103,3 @@ return _regenerator["default"].wrap(function _callee$(_context) { | ||
if (!additionalPostGetArgs) { | ||
_context.next = 8; | ||
_context.next = 13; | ||
break; | ||
@@ -128,8 +128,29 @@ } | ||
organizationsData = _yield$_get$call.data; | ||
return _context.abrupt("return", this.getFilteredOrganizations(organizationsData, additionalPostGetArgs, data)); | ||
organizations = organizationsData.organizations, limit = organizationsData.limit, offset = organizationsData.offset, totalCount = organizationsData.totalCount; | ||
_context.next = 10; | ||
return this.getFilteredOrganizations(additionalPostGetArgs, data); | ||
case 8: | ||
case 10: | ||
authorizedOrgs = _context.sent; | ||
// avUserPermissions call doesn't return much useful organization data | ||
// but we can match valid ids to useful data returned from avOrganizations | ||
authorizedFilteredOrgs = organizations.filter(function (org) { | ||
return authorizedOrgs.some(function (authOrg) { | ||
return authOrg.id === org.id; | ||
}); | ||
}); // Transform back into data object that ResourceSelect can use and paginate | ||
return _context.abrupt("return", { | ||
data: { | ||
authorizedFilteredOrgs: authorizedFilteredOrgs, | ||
totalCount: totalCount, | ||
limit: limit, | ||
offset: offset | ||
} | ||
}); | ||
case 13: | ||
return _context.abrupt("return", (0, _get2["default"])((0, _getPrototypeOf2["default"])(AvOrganizations.prototype), "postGet", this).call(this, data, config)); | ||
case 9: | ||
case 14: | ||
case "end": | ||
@@ -151,6 +172,6 @@ return _context.stop(); | ||
value: function () { | ||
var _getFilteredOrganizations = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(organizationsData, additionalPostGetArgs, data) { | ||
var _getFilteredOrganizations = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(additionalPostGetArgs, data) { | ||
var _this3 = this; | ||
var _additionalPostGetArg, resourceIds, permissionIds, _data, permissionId, region, organizations, orgLimit, orgOffset, totalOrgCount, permissionIdsToUse, resourceIdsToUse, resourceIdsArray, permissionIdsOR, _yield$this$avUserPer, userPermissions, authorizedOrgs, authorizedFilteredOrgs; | ||
var _additionalPostGetArg, resourceIds, permissionIds, _data, permissionId, region, permissionIdsToUse, resourceIdsToUse, resourceIdsArray, permissionIdsOR, _yield$this$avUserPer, userPermissions, authorizedOrgs; | ||
@@ -169,3 +190,2 @@ return _regenerator["default"].wrap(function _callee2$(_context2) { | ||
_data = data, permissionId = _data.permissionId, region = _data.region; | ||
organizations = organizationsData.organizations, orgLimit = organizationsData.limit, orgOffset = organizationsData.offset, totalOrgCount = organizationsData.totalCount; | ||
permissionIdsToUse = permissionIds || permissionId; | ||
@@ -179,7 +199,7 @@ permissionIdsToUse = this.sanitizeIds(permissionIdsToUse); | ||
if (!(region !== this.previousRegionId || !this.arePermissionsEqual(permissionIdsOR))) { | ||
_context2.next = 21; | ||
_context2.next = 20; | ||
break; | ||
} | ||
_context2.next = 12; | ||
_context2.next = 11; | ||
return this.avUserPermissions.postGet({ | ||
@@ -190,3 +210,3 @@ permissionId: permissionIdsOR, | ||
case 12: | ||
case 11: | ||
_yield$this$avUserPer = _context2.sent; | ||
@@ -196,3 +216,3 @@ userPermissions = _yield$this$avUserPer.data.axiUserPermissions; | ||
if (!userPermissions) { | ||
_context2.next = 20; | ||
_context2.next = 19; | ||
break; | ||
@@ -207,9 +227,9 @@ } | ||
this.previousRegionId = region; | ||
_context2.next = 21; | ||
_context2.next = 20; | ||
break; | ||
case 20: | ||
case 19: | ||
throw new Error('avUserPermissions call failed'); | ||
case 21: | ||
case 20: | ||
// loop thru the permissionId list of ORs, finding and adding matching orgs in the userPermissions. ANDs are beneath/within the ORs | ||
@@ -300,22 +320,13 @@ authorizedOrgs = permissionIdsOR.reduce(function (accum, permissionIdOR) { | ||
}, {}); | ||
} // avUserPermissions call doesn't return much useful organization data | ||
// but we can match valid ids to useful data returned from avOrganizations | ||
} | ||
return _context2.abrupt("return", Object.keys(authorizedOrgs).reduce(function (accum, orgId) { | ||
if (authorizedOrgs[orgId].match) { | ||
accum.push(authorizedOrgs[orgId]); | ||
} | ||
authorizedFilteredOrgs = organizations.filter(function (org) { | ||
return Object.keys(authorizedOrgs).some(function (orgId) { | ||
return authorizedOrgs[orgId] && authorizedOrgs[orgId].match && orgId === org.id; | ||
}); | ||
}); // Transform back into data object that ResourceSelect can use and paginate | ||
return accum; | ||
}, [])); | ||
return _context2.abrupt("return", { | ||
data: { | ||
authorizedFilteredOrgs: authorizedFilteredOrgs, | ||
totalCount: totalOrgCount, | ||
limit: orgLimit, | ||
offset: orgOffset | ||
} | ||
}); | ||
case 25: | ||
case 23: | ||
case "end": | ||
@@ -328,3 +339,3 @@ return _context2.stop(); | ||
function getFilteredOrganizations(_x4, _x5, _x6) { | ||
function getFilteredOrganizations(_x4, _x5) { | ||
return _getFilteredOrganizations.apply(this, arguments); | ||
@@ -331,0 +342,0 @@ } |
{ | ||
"name": "@availity/api-core", | ||
"version": "6.5.2", | ||
"version": "6.6.0", | ||
"description": "Base API definitions for the Availity REST API", | ||
@@ -24,3 +24,3 @@ "keywords": [ | ||
}, | ||
"gitHead": "2c9b55b6b97f95281933da861ad3c537ec5ece49" | ||
"gitHead": "4925f8f73f30ac3f323d20e3a329450f6d98ae9e" | ||
} |
@@ -61,8 +61,24 @@ import qs from 'qs'; | ||
const { data: organizationsData } = await super.postGet(data, config); | ||
const { organizations, limit, offset, totalCount } = organizationsData; | ||
return this.getFilteredOrganizations( | ||
organizationsData, | ||
const authorizedOrgs = await this.getFilteredOrganizations( | ||
additionalPostGetArgs, | ||
data | ||
); | ||
// avUserPermissions call doesn't return much useful organization data | ||
// but we can match valid ids to useful data returned from avOrganizations | ||
const authorizedFilteredOrgs = organizations.filter(org => | ||
authorizedOrgs.some(authOrg => authOrg.id === org.id) | ||
); | ||
// Transform back into data object that ResourceSelect can use and paginate | ||
return { | ||
data: { | ||
authorizedFilteredOrgs, | ||
totalCount, | ||
limit, | ||
offset, | ||
}, | ||
}; | ||
} | ||
@@ -74,7 +90,3 @@ | ||
async getFilteredOrganizations( | ||
organizationsData, | ||
additionalPostGetArgs, | ||
data | ||
) { | ||
async getFilteredOrganizations(additionalPostGetArgs, data) { | ||
// for filtered orgs, can pass both permissions and resources in postGetArgs, and we will use the permissionIds here over the data.permissionId | ||
@@ -86,8 +98,2 @@ const { resourceIds = [], permissionIds } = additionalPostGetArgs; | ||
const { permissionId, region } = data; | ||
const { | ||
organizations, | ||
limit: orgLimit, | ||
offset: orgOffset, | ||
totalCount: totalOrgCount, | ||
} = organizationsData; | ||
@@ -228,22 +234,8 @@ let permissionIdsToUse = permissionIds || permissionId; | ||
// avUserPermissions call doesn't return much useful organization data | ||
// but we can match valid ids to useful data returned from avOrganizations | ||
const authorizedFilteredOrgs = organizations.filter(org => | ||
Object.keys(authorizedOrgs).some( | ||
orgId => | ||
authorizedOrgs[orgId] && | ||
authorizedOrgs[orgId].match && | ||
orgId === org.id | ||
) | ||
); | ||
// Transform back into data object that ResourceSelect can use and paginate | ||
return { | ||
data: { | ||
authorizedFilteredOrgs, | ||
totalCount: totalOrgCount, | ||
limit: orgLimit, | ||
offset: orgOffset, | ||
}, | ||
}; | ||
return Object.keys(authorizedOrgs).reduce((accum, orgId) => { | ||
if (authorizedOrgs[orgId].match) { | ||
accum.push(authorizedOrgs[orgId]); | ||
} | ||
return accum; | ||
}, []); | ||
} | ||
@@ -250,0 +242,0 @@ |
151265