- Restrict authentication to the configured ownCloud URL

- catch wrong username error correctly and report to user.
This commit is contained in:
Klaas Freitag 2012-04-17 13:06:25 +02:00
parent b92c22b6df
commit 2f5a3b849c
3 changed files with 26 additions and 7 deletions

View file

@ -204,12 +204,19 @@ void Application::slotCheckAuthentication()
void Application::slotAuthCheck( const QString& ,QNetworkReply *reply ) void Application::slotAuthCheck( const QString& ,QNetworkReply *reply )
{ {
if( reply->error() == QNetworkReply::AuthenticationRequiredError ) { if( reply->error() == QNetworkReply::AuthenticationRequiredError ) { // returned if the user is wrong.
qDebug() << "******** Credentials are wrong!"; qDebug() << "******** Password is wrong!";
QMessageBox::warning(0, tr("No ownCloud Connection"), QMessageBox::warning(0, tr("No ownCloud Connection"),
tr("<p>Your ownCloud credentials are not correct.</p>" tr("<p>Your ownCloud credentials are not correct.</p>"
"<p>Please correct them by starting the configuration dialog from the tray!</p>")); "<p>Please correct them by starting the configuration dialog from the tray!</p>"));
_actionAddFolder->setEnabled( false ); _actionAddFolder->setEnabled( false );
} else if( reply->error() == QNetworkReply::OperationCanceledError ) {
// the username was wrong and ownCloudInfo was closing the request after a couple of auth tries.
qDebug() << "******** Username is wrong!";
QMessageBox::warning(0, tr("No ownCloud Connection"),
tr("<p>Your ownCloud user name is not correct.</p>"
"<p>Please correct it by starting the configuration dialog from the tray!</p>"));
_actionAddFolder->setEnabled( false );
} else { } else {
qDebug() << "######## Credentials are ok!"; qDebug() << "######## Credentials are ok!";
int cnt = _folderMan->setupFolders(); int cnt = _folderMan->setupFolders();

View file

@ -30,6 +30,7 @@ namespace Mirall
QNetworkAccessManager* ownCloudInfo::_manager = 0; QNetworkAccessManager* ownCloudInfo::_manager = 0;
SslErrorDialog *ownCloudInfo::_sslErrorDialog = 0; SslErrorDialog *ownCloudInfo::_sslErrorDialog = 0;
bool ownCloudInfo::_certsUntrusted = false; bool ownCloudInfo::_certsUntrusted = false;
int ownCloudInfo::_authAttempts = 0;
ownCloudInfo::ownCloudInfo( const QString& connectionName, QObject *parent ) : ownCloudInfo::ownCloudInfo( const QString& connectionName, QObject *parent ) :
@ -122,13 +123,23 @@ void ownCloudInfo::slotMkdirFinished()
} }
void ownCloudInfo::slotAuthentication( QNetworkReply*, QAuthenticator *auth ) void ownCloudInfo::slotAuthentication( QNetworkReply *reply, QAuthenticator *auth )
{ {
if( auth ) { if( auth && reply ) {
_authAttempts++;
MirallConfigFile cfgFile; MirallConfigFile cfgFile;
qDebug() << "Authenticating request!"; qDebug() << "Authenticating request for " << reply->url();
auth->setUser( cfgFile.ownCloudUser( _connection ) ); qDebug() << "Our Url: " << cfgFile.ownCloudUrl(_connection, true);
auth->setPassword( cfgFile.ownCloudPasswd( _connection )); if( reply->url().toString().startsWith( cfgFile.ownCloudUrl( _connection, true )) ) {
auth->setUser( cfgFile.ownCloudUser( _connection ) );
auth->setPassword( cfgFile.ownCloudPasswd( _connection ));
} else {
qDebug() << "WRN: attempt to authenticate to different url!";
}
if( _authAttempts > 10 ) {
qDebug() << "Too many attempts to authenticate. Stop request.";
reply->close();
}
} }
} }

View file

@ -86,6 +86,7 @@ private:
QHash<QNetworkReply*, QString> _directories; QHash<QNetworkReply*, QString> _directories;
static SslErrorDialog *_sslErrorDialog; static SslErrorDialog *_sslErrorDialog;
static bool _certsUntrusted; static bool _certsUntrusted;
static int _authAttempts;
}; };
}; };