From 64ce63d812889a90a4cccdbc9fb505df4d3bcc0a Mon Sep 17 00:00:00 2001 From: Francis Lachapelle Date: Tue, 3 May 2016 12:55:58 -0400 Subject: [PATCH] (js) Add support for XSRF token with downloads Initial support to download a file from an Ajax query. This allows the XSRF token to be sent and verified by the server. --- UI/MailerUI/UIxMailFolderActions.m | 11 ++-- .../MailerUI/UIxMailFolderTemplate.wox | 2 +- UI/Templates/MailerUI/UIxMailMainFrame.wox | 2 +- UI/WebServerResources/Gruntfile.js | 3 +- UI/WebServerResources/bower.json | 1 + .../js/Common/Resource.service.js | 55 ++++++++++++++++++- .../js/Mailer/Mailbox.service.js | 15 +++++ .../js/Mailer/MailboxController.js | 7 --- .../js/vendor/FileSaver.min.js | 2 + .../js/vendor/FileSaver.min.js.map | 1 + 10 files changed, 81 insertions(+), 18 deletions(-) create mode 100644 UI/WebServerResources/js/vendor/FileSaver.min.js create mode 100644 UI/WebServerResources/js/vendor/FileSaver.min.js.map diff --git a/UI/MailerUI/UIxMailFolderActions.m b/UI/MailerUI/UIxMailFolderActions.m index 36081cf1e..bb4b22658 100644 --- a/UI/MailerUI/UIxMailFolderActions.m +++ b/UI/MailerUI/UIxMailFolderActions.m @@ -369,16 +369,15 @@ SOGoMailFolder *co; WOResponse *response; NSArray *uids; - NSDictionary *jsonResponse; - NSString *value; + NSDictionary *data, *jsonResponse; co = [self clientObject]; - value = [[context request] formValueForKey: @"uid"]; + data = [[[context request] contentAsString] objectFromJSONString]; + uids = [data objectForKey: @"uids"]; response = nil; - if ([value length] > 0) + if ([uids count] > 0) { - uids = [value componentsSeparatedByString: @","]; response = [co archiveUIDs: uids inArchiveNamed: [self labelForKey: @"Saved Messages.zip" inContext: context] inContext: context]; @@ -387,7 +386,7 @@ } else { - jsonResponse = [NSDictionary dictionaryWithObject: [self labelForKey: @"Missing 'uid' parameter." inContext: context] + jsonResponse = [NSDictionary dictionaryWithObject: [self labelForKey: @"Missing 'uids' parameter." inContext: context] forKey: @"message"]; response = [self responseWithStatus: 500 andJSONRepresentation: jsonResponse]; } diff --git a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox index d3a874bde..41629748d 100644 --- a/UI/Templates/MailerUI/UIxMailFolderTemplate.wox +++ b/UI/Templates/MailerUI/UIxMailFolderTemplate.wox @@ -180,7 +180,7 @@ - + diff --git a/UI/Templates/MailerUI/UIxMailMainFrame.wox b/UI/Templates/MailerUI/UIxMailMainFrame.wox index cd7291c2b..fdc4ea627 100644 --- a/UI/Templates/MailerUI/UIxMailMainFrame.wox +++ b/UI/Templates/MailerUI/UIxMailMainFrame.wox @@ -8,7 +8,7 @@ xmlns:label="OGo:label" className="UIxPageFrame" title="title" - const:jsFiles="Common.js, Preferences.services.js, Contacts.services.js, Scheduler.services.js, Mailer.js, Mailer.services.js, vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, vendor/angular-file-upload.min.js"> + const:jsFiles="Common.js, Preferences.services.js, Contacts.services.js, Scheduler.services.js, Mailer.js, Mailer.services.js, vendor/ckeditor/ckeditor.js, vendor/ckeditor/ck.js, vendor/angular-file-upload.min.js, vendor/FileSaver.min.js">