diff options
author | Camila San <hello@camila.codes> | 2019-07-24 14:56:21 +0300 |
---|---|---|
committer | Camila San <hello@camila.codes> | 2019-10-17 21:11:31 +0300 |
commit | 19491ff85f3cd02952478d2ee1fb42caf252e9dd (patch) | |
tree | fd9bc6d7ca455e05a8cd8c5fafae4fc0eca2f792 /src/gui/accountsettings.cpp | |
parent | 08c7be5350c949b15776ab52a2b7bf637f3e02a4 (diff) |
Once client gets 401/403 from the server, check if remote wipe was requested.
- When the the users logs because of 401 or 403 errors, it checks if the
server requested the remote wipe. If yes, locally deletes account and folders
connected to the account and notify the server. If no, proceeds to ask the
user to login again.
- The app password is restored in the keychain.
- WIP: The change also includes a test class for RemoteWipe.
Signed-off-by: Camila San <hello@camila.codes>
Diffstat (limited to 'src/gui/accountsettings.cpp')
-rw-r--r-- | src/gui/accountsettings.cpp | 44 |
1 files changed, 23 insertions, 21 deletions
diff --git a/src/gui/accountsettings.cpp b/src/gui/accountsettings.cpp index 2fc324573..a7b39d606 100644 --- a/src/gui/accountsettings.cpp +++ b/src/gui/accountsettings.cpp @@ -147,6 +147,8 @@ AccountSettings::AccountSettings(AccountState *accountState, QWidget *parent) createAccountToolbox(); connect(AccountManager::instance(), &AccountManager::accountAdded, this, &AccountSettings::slotAccountAdded); + connect(this, &AccountSettings::removeAccountFolders, + AccountManager::instance(), &AccountManager::removeAccountFolders); connect(ui->_folderList, &QWidget::customContextMenuRequested, this, &AccountSettings::slotCustomContextMenuRequested); connect(ui->_folderList, &QAbstractItemView::clicked, @@ -334,9 +336,9 @@ void AccountSettings::slotEncryptionFlagError(const QByteArray& fileId, int http void AccountSettings::slotLockForEncryptionSuccess(const QByteArray& fileId, const QByteArray &token) { - accountsState()->account()->e2e()->setTokenForFolder(fileId, token); + accountsState()->account()->e2e()->setTokenForFolder(fileId, token); - FolderMetadata emptyMetadata(accountsState()->account()); + FolderMetadata emptyMetadata(accountsState()->account()); auto encryptedMetadata = emptyMetadata.encryptedMetadata(); if (encryptedMetadata.isEmpty()) { //TODO: Mark the folder as unencrypted as the metadata generation failed. @@ -348,36 +350,36 @@ void AccountSettings::slotLockForEncryptionSuccess(const QByteArray& fileId, con return; } auto storeMetadataJob = new StoreMetaDataApiJob(accountsState()->account(), fileId, emptyMetadata.encryptedMetadata()); - connect(storeMetadataJob, &StoreMetaDataApiJob::success, - this, &AccountSettings::slotUploadMetadataSuccess); - connect(storeMetadataJob, &StoreMetaDataApiJob::error, - this, &AccountSettings::slotUpdateMetadataError); + connect(storeMetadataJob, &StoreMetaDataApiJob::success, + this, &AccountSettings::slotUploadMetadataSuccess); + connect(storeMetadataJob, &StoreMetaDataApiJob::error, + this, &AccountSettings::slotUpdateMetadataError); - storeMetadataJob->start(); + storeMetadataJob->start(); } void AccountSettings::slotUploadMetadataSuccess(const QByteArray& folderId) { - const auto token = accountsState()->account()->e2e()->tokenForFolder(folderId); - auto unlockJob = new UnlockEncryptFolderApiJob(accountsState()->account(), folderId, token); - connect(unlockJob, &UnlockEncryptFolderApiJob::success, - this, &AccountSettings::slotUnlockFolderSuccess); - connect(unlockJob, &UnlockEncryptFolderApiJob::error, - this, &AccountSettings::slotUnlockFolderError); - unlockJob->start(); + const auto token = accountsState()->account()->e2e()->tokenForFolder(folderId); + auto unlockJob = new UnlockEncryptFolderApiJob(accountsState()->account(), folderId, token); + connect(unlockJob, &UnlockEncryptFolderApiJob::success, + this, &AccountSettings::slotUnlockFolderSuccess); + connect(unlockJob, &UnlockEncryptFolderApiJob::error, + this, &AccountSettings::slotUnlockFolderError); + unlockJob->start(); } void AccountSettings::slotUpdateMetadataError(const QByteArray& folderId, int httpReturnCode) { Q_UNUSED(httpReturnCode); - const auto token = accountsState()->account()->e2e()->tokenForFolder(folderId); - auto unlockJob = new UnlockEncryptFolderApiJob(accountsState()->account(), folderId, token); - connect(unlockJob, &UnlockEncryptFolderApiJob::success, - this, &AccountSettings::slotUnlockFolderSuccess); - connect(unlockJob, &UnlockEncryptFolderApiJob::error, - this, &AccountSettings::slotUnlockFolderError); - unlockJob->start(); + const auto token = accountsState()->account()->e2e()->tokenForFolder(folderId); + auto unlockJob = new UnlockEncryptFolderApiJob(accountsState()->account(), folderId, token); + connect(unlockJob, &UnlockEncryptFolderApiJob::success, + this, &AccountSettings::slotUnlockFolderSuccess); + connect(unlockJob, &UnlockEncryptFolderApiJob::error, + this, &AccountSettings::slotUnlockFolderError); + unlockJob->start(); } void AccountSettings::slotLockForEncryptionError(const QByteArray& fileId, int httpErrorCode) |