ComponentManager create-items message, encrypt server extensions for backup files, batch manager user prefs permission

This commit is contained in:
Mo Bitar
2018-05-05 23:53:38 -05:00
parent 6903dd735a
commit fd01df6e01
3 changed files with 31 additions and 15 deletions

View File

@@ -36,7 +36,9 @@ class ItemParams {
var params = {uuid: this.item.uuid, content_type: this.item.content_type, deleted: this.item.deleted, created_at: this.item.created_at};
if(!this.item.errorDecrypting) {
if(this.keys && !this.item.doNotEncrypt()) {
// Items should always be encrypted for export files. Only respect item.doNotEncrypt for remote sync params;
var doNotEncrypt = this.item.doNotEncrypt() && !this.forExportFile;
if(this.keys && !doNotEncrypt) {
var encryptedParams = EncryptionHelper.encryptItem(this.item, this.keys, this.version);
_.merge(params, encryptedParams);

View File

@@ -286,6 +286,7 @@ class ComponentManager {
deassociate-item
clear-selection
create-item
create-items
delete-items
set-component-data
install-local-component
@@ -301,8 +302,8 @@ class ComponentManager {
this.handleSetComponentDataMessage(component, message);
} else if(message.action === "delete-items") {
this.handleDeleteItemsMessage(component, message);
} else if(message.action === "create-item") {
this.handleCreateItemMessage(component, message);
} else if(message.action === "create-items" || message.action === "create-item") {
this.handleCreateItemsMessage(component, message);
} else if(message.action === "save-items") {
this.handleSaveItemsMessage(component, message);
} else if(message.action === "toggle-activate-component") {
@@ -470,26 +471,39 @@ class ComponentManager {
});
}
handleCreateItemMessage(component, message) {
handleCreateItemsMessage(component, message) {
var responseItems = message.data.item ? [message.data.item] : message.data.items;
let uniqueContentTypes = _.uniq(responseItems.map((item) => {return item.content_type}));
var requiredPermissions = [
{
name: "stream-items",
content_types: [message.data.item.content_type]
content_types: uniqueContentTypes
}
];
this.runWithPermissions(component, requiredPermissions, () => {
var responseItem = message.data.item;
this.removePrivatePropertiesFromResponseItems([responseItem], component);
var item = this.modelManager.createItem(responseItem);
if(responseItem.clientData) {
item.setDomainDataItem(component.url || component.uuid, responseItem.clientData, ClientDataDomain);
this.removePrivatePropertiesFromResponseItems(responseItems, component);
var processedItems = [];
for(let responseItem of responseItems) {
var item = this.modelManager.createItem(responseItem);
if(responseItem.clientData) {
item.setDomainDataItem(component.url || component.uuid, responseItem.clientData, ClientDataDomain);
}
this.modelManager.addItem(item);
this.modelManager.resolveReferencesForItem(item, true);
item.setDirty(true);
processedItems.push(item);
}
this.modelManager.addItem(item);
this.modelManager.resolveReferencesForItem(item, true);
item.setDirty(true);
this.syncManager.sync("handleCreateItemMessage");
this.replyToMessage(component, message, {item: this.jsonForItem(item, component)})
let reply =
message.action == "save-item" ?
{item: this.jsonForItem(processedItems[0], component)}
:
{items: processedItems.map((item) => {return this.jsonForItem(item, component)})}
this.replyToMessage(component, message, reply)
});
}

View File

@@ -135,7 +135,7 @@ class NativeExtManager {
permissions: [
{
name: "stream-items",
content_types: ["Note", "Tag", "SN|Component", "SN|Theme", "SF|Extension", "Extension", "SF|MFA", "SN|Editor"]
content_types: ["Note", "Tag", "SN|Component", "SN|Theme", "SF|Extension", "Extension", "SF|MFA", "SN|Editor", "SN|UserPreferences"]
}
]
}