[CSE] Display menu for encrytp / decryot folders

If the server supports client syde encryption, display
a menu on right click that should display encrypt and decrypt.
ideally it would show the encrypt if the folder is decrypted, and
decrypt if the folder is encrypted but currently there's no way
for the client to know that.
This commit is contained in:
Tomaz Canabrava 2017-08-24 15:53:26 +02:00 committed by Roeland Jago Douma
parent 1c32f6bb2e
commit 9318c487b9
No known key found for this signature in database
GPG key ID: F941078878347C0C
5 changed files with 42 additions and 1 deletions

View file

@ -275,6 +275,23 @@ void AccountSettings::slotCustomContextMenuRequested(const QPoint &pos)
ac->setEnabled(false);
}
qCInfo(lcAccountSettings) << "Display Client Side Encryption Options"
<< accountsState()->account()->hasClientSideEncryption();
if (accountsState()->account()->hasClientSideEncryption()) {
ac = menu->addAction(tr("Encrypt"));
connect(ac, &QAction::triggered, [this, &index](bool triggered) {
Q_UNUSED(triggered);
});
ac = menu->addAction(tr("Decrypt"));
connect(ac, &QAction::triggered, [this, &index](bool triggered) {
Q_UNUSED(triggered);
});
}
menu->exec(QCursor::pos());
return;
@ -701,6 +718,15 @@ void AccountSettings::slotAccountStateChanged()
_toggleSignInOutAction->setText(tr("Log out"));
}
}
if (state == AccountState::State::Connected) {
/* TODO: We should probably do something better here.
* Verify if the user has a private key already uploaded to the server,
* if it has, do not offer to create one.
*/
qCInfo(lcAccountSettings) << "Accout" << accountsState()->account()->displayName()
<< "Client Side Encryption" << accountsState()->account()->hasClientSideEncryption();
}
}
void AccountSettings::slotLinkActivated(const QString &link)

View file

@ -62,6 +62,8 @@ public:
bool paused;
/// whether the folder syncs hidden files
bool ignoreHiddenFiles;
/// the folder has client side encryption
bool isClientSideEncrypted;
/// Saves the folder definition, creating a new settings group.
static void save(QSettings &settings, const FolderDefinition &folder);

View file

@ -484,5 +484,14 @@ void Account::setNonShib(bool nonShib)
}
}
bool Account::hasClientSideEncryption() const
{
return _hasClientSideEncryption;
}
void Account::setHasClientSideEncryption(bool cse)
{
_hasClientSideEncryption = cse;
}
} // namespace OCC

View file

@ -225,6 +225,9 @@ public:
/// Called by network jobs on credential errors, emits invalidCredentials()
void handleInvalidCredentials();
bool hasClientSideEncryption() const;
void setHasClientSideEncryption(bool cse);
public slots:
/// Used when forgetting credentials
void clearQNAMCache();
@ -275,6 +278,7 @@ private:
QSharedPointer<QNetworkAccessManager> _am;
QScopedPointer<AbstractCredentials> _credentials;
bool _http2Supported = false;
bool _hasClientSideEncryption;
/// Certificates that were explicitly rejected by the user
QList<QSslCertificate> _rejectedCertificates;

View file

@ -263,7 +263,7 @@ void ConnectionValidator::checkClientSideEncryption()
}
}
// _account->setHasClientSideEncryption(hasClientSideEncryption);
_account->setHasClientSideEncryption(hasClientSideEncryption);
});
job->start();
}