@rss/common
Advanced tools
Comparing version 0.0.45 to 0.0.46
@@ -5,3 +5,4 @@ 'use strict'; | ||
DRAFT: 'DRAFT', | ||
PUBLISHED: 'PUBLISHED' | ||
PUBLISHED: 'PUBLISHED', | ||
INTERNAL: 'INTERNAL' | ||
}; |
'use strict'; | ||
module.exports = ['CHEMICAL', 'LOTO', 'MEDICAL']; | ||
var types = { | ||
CHEMICAL: 'CHEMICAL', | ||
LOTO: 'LOTO', | ||
MEDICAL: 'MEDICAL', | ||
PLACARD: 'PLACARD' | ||
}; | ||
module.exports = types; | ||
module.exports.keys = Object.keys(types); |
@@ -12,2 +12,3 @@ 'use strict'; | ||
var InspectCard = require('../model/procedure/inspect-card'); | ||
var InventoryCard = require('../model/procedure/inventory-card'); | ||
var LotoElectricalCard = require('../model/procedure/loto-electrical-card'); | ||
@@ -34,2 +35,4 @@ var ValueUnitCard = require('../model/procedure/value-unit-card'); | ||
return new InspectCard(card); | ||
case 'INVENTORY': | ||
return new InventoryCard(card); | ||
case 'LOTO_ELECTRICAL': | ||
@@ -36,0 +39,0 @@ return new LotoElectricalCard(card); |
@@ -6,2 +6,3 @@ 'use strict'; | ||
var ROLES = require('../constant/core/roles.constant'); | ||
var TEMPLATE_TYPE = require('../constant/procedure/template-type.constant'); | ||
@@ -91,28 +92,33 @@ module.exports.permissionError = function (message) { | ||
module.exports.hasOwnerAccessToDocument = function (_ref, user) { | ||
var access = _ref.access, | ||
var createdBy = _ref.createdBy, | ||
access = _ref.access, | ||
types = _ref.template.types; | ||
return module.exports.hasAccessToDocument(access.filter(function (item) { | ||
return item.permission === 'OWNER'; | ||
}), types, user); | ||
}), types, user, createdBy); | ||
}; | ||
module.exports.hasWriteAccessToDocument = function (_ref2, user) { | ||
var access = _ref2.access, | ||
var createdBy = _ref2.createdBy, | ||
access = _ref2.access, | ||
types = _ref2.template.types; | ||
return module.exports.hasAccessToDocument(access.filter(function (item) { | ||
return item.permission === 'OWNER' || item.permission === 'WRITE'; | ||
}), types, user); | ||
}), types, user, createdBy); | ||
}; | ||
module.exports.hasReadAccessToDocument = function (_ref3, user) { | ||
var access = _ref3.access, | ||
var createdBy = _ref3.createdBy, | ||
access = _ref3.access, | ||
types = _ref3.template.types; | ||
return module.exports.hasAccessToDocument(access, types, user); | ||
return module.exports.hasAccessToDocument(access, types, user, createdBy); | ||
}; | ||
module.exports.hasAccessToDocument = function (access, types, user) { | ||
var createdBy = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {}; | ||
var accessIds = [user.campusCode, user.userId].concat(_toConsumableArray(user.groups.map(function (group) { | ||
return group.id; | ||
}))); | ||
return access.some(function (item) { | ||
return (types || []).includes(TEMPLATE_TYPE.PLACARD) && module.exports.isChemAdmin(createdBy.campusCode, user) || access.some(function (item) { | ||
return accessIds.includes(item.id) || module.exports.hasRole(user, ROLES.PROCEDURES_ADMIN, { | ||
@@ -119,0 +125,0 @@ tenantCode: item.tenantCode, |
@@ -27,6 +27,3 @@ 'use strict'; | ||
_this.details = { | ||
buildingId: null, | ||
buildingName: null, | ||
roomId: null, | ||
roomNumber: null, | ||
location: null, | ||
inventories: [], | ||
@@ -45,6 +42,3 @@ hazardCodes: [] | ||
value: function fillObject(details) { | ||
this.details.buildingId = details.buildingId; | ||
this.details.buildingName = details.buildingName; | ||
this.details.roomId = details.roomId; | ||
this.details.roomNumber = details.roomNumber; | ||
this.details.location = details.location || null; | ||
this.details.inventories = details.inventories ? details.inventories.map(function (inv) { | ||
@@ -70,6 +64,3 @@ return new InventoryPlacardReference(inv); | ||
details: { | ||
buildingId: { type: 'string' }, | ||
buildingName: { type: 'string' }, | ||
roomId: { type: 'string' }, | ||
roomNumber: { type: 'string' }, | ||
location: { type: 'object' }, | ||
inventories: { type: 'array', item: { $ref: 'inventory-placard-reference.schema.json' } }, | ||
@@ -76,0 +67,0 @@ hazardCodes: { type: 'array', item: { type: 'string' } } |
@@ -11,3 +11,3 @@ 'use strict'; | ||
var TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant'); | ||
var TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant').keys; | ||
@@ -14,0 +14,0 @@ var TemplateReference = function () { |
@@ -14,3 +14,3 @@ 'use strict'; | ||
var TEMPLATE_STATUS = require('../../constant/procedure/template-status.constant'); | ||
var TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant'); | ||
var TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant').keys; | ||
@@ -17,0 +17,0 @@ var Template = function () { |
{ | ||
"name": "@rss/common", | ||
"version": "0.0.45", | ||
"version": "0.0.46", | ||
"description": "common constant, classes, & helper", | ||
@@ -5,0 +5,0 @@ "author": "Risk & Safety Solution", |
module.exports = { | ||
DRAFT: 'DRAFT', | ||
PUBLISHED: 'PUBLISHED', | ||
INTERNAL: 'INTERNAL', | ||
}; |
@@ -1,1 +0,10 @@ | ||
module.exports = ['CHEMICAL', 'LOTO', 'MEDICAL']; | ||
const types = { | ||
CHEMICAL: 'CHEMICAL', | ||
LOTO: 'LOTO', | ||
MEDICAL: 'MEDICAL', | ||
PLACARD: 'PLACARD', | ||
}; | ||
module.exports = types; | ||
module.exports.keys = Object.keys(types); |
@@ -8,2 +8,3 @@ const AcknowledgementCard = require('../model/procedure/acknowledgement-card'); | ||
const InspectCard = require('../model/procedure/inspect-card'); | ||
const InventoryCard = require('../model/procedure/inventory-card'); | ||
const LotoElectricalCard = require('../model/procedure/loto-electrical-card'); | ||
@@ -30,2 +31,4 @@ const ValueUnitCard = require('../model/procedure/value-unit-card'); | ||
return new InspectCard(card); | ||
case 'INVENTORY': | ||
return new InventoryCard(card); | ||
case 'LOTO_ELECTRICAL': | ||
@@ -32,0 +35,0 @@ return new LotoElectricalCard(card); |
const ROLES = require('../constant/core/roles.constant'); | ||
const TEMPLATE_TYPE = require('../constant/procedure/template-type.constant'); | ||
@@ -75,6 +76,6 @@ module.exports.permissionError = (message) => ({ status: 403, message: message || 'no permission' }); | ||
// procedures | ||
module.exports.hasOwnerAccessToDocument = ({ access, template: { types } }, user) => | ||
module.exports.hasAccessToDocument(access.filter((item) => item.permission === 'OWNER'), types, user); | ||
module.exports.hasOwnerAccessToDocument = ({ createdBy, access, template: { types } }, user) => | ||
module.exports.hasAccessToDocument(access.filter((item) => item.permission === 'OWNER'), types, user, createdBy); | ||
module.exports.hasWriteAccessToDocument = ({ access, template: { types } }, user) => | ||
module.exports.hasWriteAccessToDocument = ({ createdBy, access, template: { types } }, user) => | ||
module.exports.hasAccessToDocument( | ||
@@ -84,17 +85,21 @@ access.filter((item) => item.permission === 'OWNER' || item.permission === 'WRITE'), | ||
user, | ||
createdBy, | ||
); | ||
module.exports.hasReadAccessToDocument = ({ access, template: { types } }, user) => | ||
module.exports.hasAccessToDocument(access, types, user); | ||
module.exports.hasReadAccessToDocument = ({ createdBy, access, template: { types } }, user) => | ||
module.exports.hasAccessToDocument(access, types, user, createdBy); | ||
module.exports.hasAccessToDocument = (access, types, user) => { | ||
module.exports.hasAccessToDocument = (access, types, user, createdBy = {}) => { | ||
const accessIds = [user.campusCode, user.userId, ...user.groups.map((group) => group.id)]; | ||
return access.some( | ||
(item) => | ||
accessIds.includes(item.id) || | ||
module.exports.hasRole(user, ROLES.PROCEDURES_ADMIN, { | ||
tenantCode: item.tenantCode, | ||
campusCode: item.campusCode, | ||
types, | ||
}), | ||
return ( | ||
((types || []).includes(TEMPLATE_TYPE.PLACARD) && module.exports.isChemAdmin(createdBy.campusCode, user)) || | ||
access.some( | ||
(item) => | ||
accessIds.includes(item.id) || | ||
module.exports.hasRole(user, ROLES.PROCEDURES_ADMIN, { | ||
tenantCode: item.tenantCode, | ||
campusCode: item.campusCode, | ||
types, | ||
}), | ||
) | ||
); | ||
@@ -101,0 +106,0 @@ }; |
@@ -451,2 +451,20 @@ const ROLES = require('../constant/core/roles.constant'); | ||
it('should have read access to PLACARD document if Chem Admin for that campus', () => { | ||
const document = { | ||
template: { | ||
types: ['PLACARD'], | ||
}, | ||
createdBy: { | ||
userId: 'creator', | ||
firstName: 'John', | ||
lastName: 'Creator', | ||
tenantCode: 'UC', | ||
campusCode: '03', | ||
}, | ||
access: [], | ||
}; | ||
expect(Helper.hasReadAccessToDocument(document, admin)).toBeTruthy(); | ||
}); | ||
it('should not have read access if procedure admin for tenant but not document type', () => { | ||
@@ -453,0 +471,0 @@ const document = { |
@@ -12,6 +12,3 @@ const clone = require('clone'); | ||
this.details = { | ||
buildingId: null, | ||
buildingName: null, | ||
roomId: null, | ||
roomNumber: null, | ||
location: null, | ||
inventories: [], | ||
@@ -27,6 +24,3 @@ hazardCodes: [], | ||
fillObject(details) { | ||
this.details.buildingId = details.buildingId; | ||
this.details.buildingName = details.buildingName; | ||
this.details.roomId = details.roomId; | ||
this.details.roomNumber = details.roomNumber; | ||
this.details.location = details.location || null; | ||
this.details.inventories = details.inventories | ||
@@ -52,6 +46,3 @@ ? details.inventories.map((inv) => new InventoryPlacardReference(inv)) | ||
details: { | ||
buildingId: { type: 'string' }, | ||
buildingName: { type: 'string' }, | ||
roomId: { type: 'string' }, | ||
roomNumber: { type: 'string' }, | ||
location: { type: 'object' }, | ||
inventories: { type: 'array', item: { $ref: 'inventory-placard-reference.schema.json' } }, | ||
@@ -58,0 +49,0 @@ hazardCodes: { type: 'array', item: { type: 'string' } }, |
@@ -5,3 +5,3 @@ const ObjectId = require('bson').ObjectID; | ||
const TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant'); | ||
const TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant').keys; | ||
@@ -8,0 +8,0 @@ class TemplateReference { |
@@ -8,3 +8,3 @@ const ObjectId = require('bson').ObjectID; | ||
const TEMPLATE_STATUS = require('../../constant/procedure/template-status.constant'); | ||
const TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant'); | ||
const TEMPLATE_TYPES = require('../../constant/procedure/template-type.constant').keys; | ||
@@ -11,0 +11,0 @@ class Template { |
Sorry, the diff of this file is not supported yet
743688
12200