[Actions] Restrict mutating actions

Restrict actions which cause mutation of domain objects to
types of domain objects which can be created. (This does not
include Packet or Telemetry Point, WTD-723.)
This commit is contained in:
Victor Woeltjen 2015-01-27 13:00:40 -08:00
parent 5c34382933
commit 4c42d4de28
3 changed files with 20 additions and 6 deletions

View File

@ -57,7 +57,11 @@ define(
* will be performed; should contain a `domainObject` property
*/
EditAction.appliesTo = function (context) {
return (context || {}).domainObject !== undefined;
var domainObject = (context || {}).domainObject,
type = domainObject && domainObject.getCapability('type');
// Only allow creatable types to be edited
return type && type.hasFeature('creation');
};
return EditAction;

View File

@ -70,9 +70,14 @@ define(
* context.
*/
PropertiesAction.appliesTo = function (context) {
return (context || {}).domainObject &&
(context || {}).domainObject.hasCapability("type") &&
(context || {}).domainObject.hasCapability("persistence");
var domainObject = (context || {}).domainObject,
type = domainObject && domainObject.getCapability('type'),
creatable = type && type.hasFeature('creation');
// Only allow creatable types to be edited
return domainObject &&
domainObject.hasCapability("persistence") &&
creatable;
};
return PropertiesAction;

View File

@ -80,9 +80,14 @@ define(
RemoveAction.appliesTo = function (context) {
var object = (context || {}).domainObject,
contextCapability = object && object.getCapability("context"),
parent = contextCapability && contextCapability.getParent();
parent = contextCapability && contextCapability.getParent(),
parentType = parent.getCapability('type'),
parentCreatable = parentType && parentType.hasFeature('creation');
// Only creatable types should be modifiable
return parent !== undefined &&
Array.isArray(parent.getModel().composition);
Array.isArray(parent.getModel().composition) &&
parentCreatable;
};
return RemoveAction;