2017-07-24 11:43:32 +00:00
|
|
|
'use strict';
|
|
|
|
|
|
|
|
const { enforce } = require('./helpers');
|
2018-08-03 11:35:55 +00:00
|
|
|
const shares = require('../models/shares');
|
2018-11-18 14:38:52 +00:00
|
|
|
const interoperableErrors = require('../../shared/interoperable-errors');
|
2017-07-24 11:43:32 +00:00
|
|
|
|
|
|
|
async function validateEntity(tx, entity) {
|
|
|
|
enforce(entity.namespace, 'Entity namespace not set');
|
|
|
|
if (!await tx('namespaces').where('id', entity.namespace).first()) {
|
2017-09-17 14:36:23 +00:00
|
|
|
throw new interoperableErrors.NamespaceNotFoundError();
|
2017-07-24 11:43:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-07-29 19:42:07 +00:00
|
|
|
async function validateMove(context, entity, existing, entityTypeId, createOperation, deleteOperation) {
|
|
|
|
if (existing.namespace !== entity.namespace) {
|
|
|
|
await shares.enforceEntityPermission(context, 'namespace', entity.namespace, createOperation);
|
|
|
|
await shares.enforceEntityPermission(context, entityTypeId, entity.id, deleteOperation);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2017-07-24 11:43:32 +00:00
|
|
|
module.exports = {
|
2017-07-29 19:42:07 +00:00
|
|
|
validateEntity,
|
|
|
|
validateMove
|
2017-07-24 11:43:32 +00:00
|
|
|
};
|