loleaflet/dist/errormessages.js | 1 + loleaflet/src/core/Socket.js | 3 +++ wsd/DocumentBroker.cpp | 5 +++++ wsd/Storage.cpp | 4 ++++ wsd/Storage.hpp | 1 + 5 files changed, 14 insertions(+)
New commits: commit 43da694acab846eec14b3013da6449d5e24765bf Author: Pranav Kant <pran...@collabora.co.uk> Date: Wed May 31 11:51:12 2017 +0530 Handle WOPI PutFile unauthorized access token Change-Id: I29ee8cc0c9f3ea42f70628eca6f74d161d1a38f9 (cherry picked from commit d840e8720a2ba45ae981b53e5a06b4d28f847314) Reviewed-on: https://gerrit.libreoffice.org/38259 Reviewed-by: Jan Holesovsky <ke...@collabora.com> Tested-by: Jan Holesovsky <ke...@collabora.com> diff --git a/loleaflet/dist/errormessages.js b/loleaflet/dist/errormessages.js index 89f31fc7..8ea1185c 100644 --- a/loleaflet/dist/errormessages.js +++ b/loleaflet/dist/errormessages.js @@ -12,5 +12,6 @@ exports.faileddocloading = _('Failed to load the document. Please ensure the fil exports.storage = { loadfailed: _('Failed to read document from storage. Please contact your storage server (%storageserver) administrator.'), savediskfull: _('Save failed due to no disk space left on storage server. Document will now be read-only. Please contact the server (%storageserver) administrator to continue editing.'), + saveunauthorized: _('Document cannot be saved to storage server (%storageserver) due to expired or invalid access token. Refresh your session to not to lose your work.'), savefailed: _('Document cannot be saved to storage. Check your permissions or contact the storage server (%storageserver) administrator.') }; diff --git a/loleaflet/src/core/Socket.js b/loleaflet/src/core/Socket.js index 25f5f83f..fdce2a54 100644 --- a/loleaflet/src/core/Socket.js +++ b/loleaflet/src/core/Socket.js @@ -320,6 +320,9 @@ L.Socket = L.Class.extend({ else if (command.errorKind === 'savefailed') { storageError = errorMessages.storage.savefailed; } + else if (command.errorKind === 'saveunauthorized') { + storageError = errorMessages.storage.saveunauthorized; + } else if (command.errorKind === 'loadfailed') { storageError = errorMessages.storage.loadfailed; // Since this is a document load failure, wsd will disconnect the socket anyway, diff --git a/wsd/DocumentBroker.cpp b/wsd/DocumentBroker.cpp index 5b15fff1..1e4870e1 100644 --- a/wsd/DocumentBroker.cpp +++ b/wsd/DocumentBroker.cpp @@ -642,6 +642,11 @@ bool DocumentBroker::saveToStorageInternal(const std::string& sessionId, sessionIt.second->sendTextFrame("error: cmd=storage kind=savediskfull"); } } + else if (storageSaveResult == StorageBase::SaveResult::UNAUTHORIZED) + { + LOG_ERR("Cannot save docKey [" << _docKey << "] to storage URI [" << uri << "]. Invalid or expired access token. Notifying client."); + it->second->sendTextFrame("error: cmd=storage kind=saveunauthorized"); + } else if (storageSaveResult == StorageBase::SaveResult::FAILED) { //TODO: Should we notify all clients? diff --git a/wsd/Storage.cpp b/wsd/Storage.cpp index e05641b6..4e6e6567 100644 --- a/wsd/Storage.cpp +++ b/wsd/Storage.cpp @@ -660,6 +660,10 @@ StorageBase::SaveResult WopiStorage::saveLocalFileToStorage(const std::string& a { saveResult = StorageBase::SaveResult::DISKFULL; } + else if (response.getStatus() == Poco::Net::HTTPResponse::HTTP_UNAUTHORIZED) + { + saveResult = StorageBase::SaveResult::UNAUTHORIZED; + } } catch(const Poco::Exception& pexc) { diff --git a/wsd/Storage.hpp b/wsd/Storage.hpp index 6613fbbc..d0dff593 100644 --- a/wsd/Storage.hpp +++ b/wsd/Storage.hpp @@ -57,6 +57,7 @@ public: { OK, DISKFULL, + UNAUTHORIZED, FAILED }; _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits