Skip to content

Commit 5480a80

Browse files
committed
[auth] Reinstate auth system reply expansions for OWS providers
- Apparently this was lost during a git squash of commits for 2.12 PR (Needs forward-ported to 2.16, master_2 and master)
1 parent 90e4134 commit 5480a80

12 files changed

+188
-1
lines changed

src/core/qgsgml.cpp

+14
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,20 @@ int QgsGml::getFeatures( const QString& uri, QGis::WkbType* wkbType, QgsRectangl
103103
}
104104
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );
105105

106+
if ( !authcfg.isEmpty() )
107+
{
108+
if ( !QgsAuthManager::instance()->updateNetworkReply( reply, authcfg ) )
109+
{
110+
reply->deleteLater();
111+
QgsMessageLog::logMessage(
112+
tr( "GML Getfeature network reply update failed for authcfg %1" ).arg( authcfg ),
113+
tr( "Network" ),
114+
QgsMessageLog::CRITICAL
115+
);
116+
return 1;
117+
}
118+
}
119+
106120
connect( reply, SIGNAL( finished() ), this, SLOT( setFinished() ) );
107121
connect( reply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( handleProgressEvent( qint64, qint64 ) ) );
108122

src/providers/wcs/qgswcscapabilities.cpp

+35
Original file line numberDiff line numberDiff line change
@@ -157,6 +157,14 @@ bool QgsWcsCapabilities::sendRequest( QString const & url )
157157

158158
QgsDebugMsg( QString( "getcapabilities: %1" ).arg( url ) );
159159
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
160+
if ( !setAuthorizationReply( mCapabilitiesReply ) )
161+
{
162+
mCapabilitiesReply->deleteLater();
163+
mCapabilitiesReply = nullptr;
164+
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
165+
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
166+
return false;
167+
}
160168

161169
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
162170
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
@@ -368,6 +376,15 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
368376
mCapabilitiesReply->deleteLater();
369377
QgsDebugMsg( QString( "redirected getcapabilities: %1" ).arg( redirect.toString() ) );
370378
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
379+
if ( !setAuthorizationReply( mCapabilitiesReply ) )
380+
{
381+
mCapabilitiesResponse.clear();
382+
mCapabilitiesReply->deleteLater();
383+
mCapabilitiesReply = nullptr;
384+
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
385+
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
386+
return;
387+
}
371388

372389
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
373390
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
@@ -394,6 +411,15 @@ void QgsWcsCapabilities::capabilitiesReplyFinished()
394411
mCapabilitiesReply->deleteLater();
395412

396413
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
414+
if ( !setAuthorizationReply( mCapabilitiesReply ) )
415+
{
416+
mCapabilitiesResponse.clear();
417+
mCapabilitiesReply->deleteLater();
418+
mCapabilitiesReply = nullptr;
419+
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
420+
QgsMessageLog::logMessage( mError, tr( "WCS" ) );
421+
return;
422+
}
397423
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
398424
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ) );
399425
return;
@@ -1181,6 +1207,15 @@ bool QgsWcsCapabilities::setAuthorization( QNetworkRequest &request ) const
11811207
return true;
11821208
}
11831209

1210+
bool QgsWcsCapabilities::setAuthorizationReply( QNetworkReply *reply ) const
1211+
{
1212+
if ( mUri.hasParam( "authcfg" ) && !mUri.param( "authcfg" ).isEmpty() )
1213+
{
1214+
return QgsAuthManager::instance()->updateNetworkReply( reply, mUri.param( "authcfg" ) );
1215+
}
1216+
return true;
1217+
}
1218+
11841219
void QgsWcsCapabilities::showMessageBox( const QString& title, const QString& text )
11851220
{
11861221
QgsMessageOutput *message = QgsMessageOutput::createMessageOutput();

src/providers/wcs/qgswcscapabilities.h

+3
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,9 @@ class QgsWcsCapabilities : public QObject
155155
//! set authorization header
156156
bool setAuthorization( QNetworkRequest &request ) const;
157157

158+
//! set authorization reply
159+
bool setAuthorizationReply( QNetworkReply * reply ) const;
160+
158161
QString version() const { return mCapabilities.version; }
159162

160163
/**

src/providers/wcs/qgswcsprovider.cpp

+27
Original file line numberDiff line numberDiff line change
@@ -1684,6 +1684,15 @@ QgsWcsDownloadHandler::QgsWcsDownloadHandler( const QUrl& url, QgsWcsAuthorizati
16841684
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, cacheLoadControl );
16851685

16861686
mCacheReply = QgsNetworkAccessManager::instance()->get( request );
1687+
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
1688+
{
1689+
mCacheReply->deleteLater();
1690+
mCacheReply = nullptr;
1691+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
1692+
tr( "WCS" ) );
1693+
finish();
1694+
return;
1695+
}
16871696
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ) );
16881697
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ) );
16891698
}
@@ -1719,6 +1728,15 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
17191728
return;
17201729
}
17211730
mCacheReply = QgsNetworkAccessManager::instance()->get( request );
1731+
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
1732+
{
1733+
mCacheReply->deleteLater();
1734+
mCacheReply = nullptr;
1735+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
1736+
tr( "WCS" ) );
1737+
finish();
1738+
return;
1739+
}
17221740
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ) );
17231741
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ) );
17241742

@@ -1883,6 +1901,15 @@ void QgsWcsDownloadHandler::cacheReplyFinished()
18831901
mCacheReply->deleteLater();
18841902

18851903
mCacheReply = QgsNetworkAccessManager::instance()->get( request );
1904+
if ( !mAuth.setAuthorizationReply( mCacheReply ) )
1905+
{
1906+
mCacheReply->deleteLater();
1907+
mCacheReply = nullptr;
1908+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
1909+
tr( "WCS" ) );
1910+
finish();
1911+
return;
1912+
}
18861913
connect( mCacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ), Qt::DirectConnection );
18871914
connect( mCacheReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( cacheReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );
18881915

src/providers/wcs/qgswcsprovider.h

+10
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,16 @@ struct QgsWcsAuthorization
7171
return true;
7272
}
7373

74+
//! set authorization reply
75+
bool setAuthorizationReply( QNetworkReply * reply ) const
76+
{
77+
if ( !mAuthCfg.isEmpty() )
78+
{
79+
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
80+
}
81+
return true;
82+
}
83+
7484
//! Username for basic http authentication
7585
QString mUserName;
7686

src/providers/wfs/qgswfscapabilities.cpp

+31
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,15 @@ bool QgsWFSCapabilities::setAuthorization( QNetworkRequest &request ) const
165165
return true;
166166
}
167167

168+
bool QgsWFSCapabilities::setAuthorizationReply( QNetworkReply *reply ) const
169+
{
170+
if ( mUri.hasParam( "authcfg" ) && !mUri.param( "authcfg" ).isEmpty() )
171+
{
172+
return QgsAuthManager::instance()->updateNetworkReply( reply, mUri.param( "authcfg" ) );
173+
}
174+
return true;
175+
}
176+
168177
void QgsWFSCapabilities::requestCapabilities()
169178
{
170179
mErrorCode = QgsWFSCapabilities::NoError;
@@ -182,6 +191,17 @@ void QgsWFSCapabilities::requestCapabilities()
182191

183192
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
184193
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
194+
if ( !setAuthorizationReply( mCapabilitiesReply ) )
195+
{
196+
mCapabilitiesReply->deleteLater();
197+
mCapabilitiesReply = nullptr;
198+
mErrorCode = QgsWFSCapabilities::NetworkError;
199+
mErrorMessage = tr( "Download of capabilities failed: network reply update failed for authentication config" );
200+
QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) );
201+
emit gotCapabilities();
202+
return;
203+
}
204+
185205
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
186206
}
187207

@@ -220,6 +240,17 @@ void QgsWFSCapabilities::capabilitiesReplyFinished()
220240
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
221241

222242
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
243+
if ( !setAuthorizationReply( mCapabilitiesReply ) )
244+
{
245+
mCaps.clear();
246+
mCapabilitiesReply->deleteLater();
247+
mCapabilitiesReply = nullptr;
248+
mErrorCode = QgsWFSCapabilities::NetworkError;
249+
mErrorMessage = tr( "Download of capabilities failed: network reply update failed for authentication config" );
250+
QgsMessageLog::logMessage( mErrorMessage, tr( "WFS" ) );
251+
emit gotCapabilities();
252+
return;
253+
}
223254

224255
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ) );
225256
return;

src/providers/wfs/qgswfscapabilities.h

+3
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,9 @@ class QgsWFSCapabilities : public QObject
7676
//! set authorization header
7777
bool setAuthorization( QNetworkRequest &request ) const;
7878

79+
//! set authorization reply
80+
bool setAuthorizationReply( QNetworkReply * reply ) const;
81+
7982
signals:
8083
void gotCapabilities();
8184

src/providers/wfs/qgswfsprovider.cpp

+23
Original file line numberDiff line numberDiff line change
@@ -743,6 +743,13 @@ int QgsWFSProvider::describeFeatureTypeGET( const QString& uri, QString& geometr
743743
return 1;
744744
}
745745
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );
746+
if ( !mAuth.setAuthorizationReply( reply ) )
747+
{
748+
reply->deleteLater();
749+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
750+
tr( "WFS" ) );
751+
return 1;
752+
}
746753

747754
connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
748755
while ( !mNetworkRequestFinished )
@@ -1341,6 +1348,14 @@ bool QgsWFSProvider::sendTransactionDocument( const QDomDocument& doc, QDomDocum
13411348

13421349
request.setHeader( QNetworkRequest::ContentTypeHeader, "text/xml" );
13431350
QNetworkReply* reply = QgsNetworkAccessManager::instance()->post( request, doc.toByteArray( -1 ) );
1351+
if ( !mAuth.setAuthorizationReply( reply ) )
1352+
{
1353+
reply->deleteLater();
1354+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
1355+
tr( "WFS" ) );
1356+
return false;
1357+
}
1358+
13441359
QgsDebugMsg( "WFS transaction: " + doc.toByteArray( ) );
13451360

13461361
connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
@@ -1479,6 +1494,14 @@ void QgsWFSProvider::getLayerCapabilities()
14791494
return;
14801495
}
14811496
QNetworkReply* reply = QgsNetworkAccessManager::instance()->get( request );
1497+
if ( !mAuth.setAuthorizationReply( reply ) )
1498+
{
1499+
reply->deleteLater();
1500+
mCapabilities = 0;
1501+
QgsMessageLog::logMessage( tr( "Network reply update failed for authentication config" ),
1502+
tr( "WFS" ) );
1503+
return;
1504+
}
14821505

14831506
connect( reply, SIGNAL( finished() ), this, SLOT( networkRequestFinished() ) );
14841507
while ( !mNetworkRequestFinished )

src/providers/wfs/qgswfsprovider.h

+10
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,16 @@ struct QgsWFSAuthorization
5656
return true;
5757
}
5858

59+
//! set authorization reply
60+
bool setAuthorizationReply( QNetworkReply * reply ) const
61+
{
62+
if ( !mAuthCfg.isEmpty() )
63+
{
64+
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
65+
}
66+
return true;
67+
}
68+
5969
//! Username for basic http authentication
6070
QString mUserName;
6171

src/providers/wms/qgswmscapabilities.cpp

+21-1
Original file line numberDiff line numberDiff line change
@@ -1934,6 +1934,14 @@ bool QgsWmsCapabilitiesDownload::downloadCapabilities()
19341934
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
19351935

19361936
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
1937+
if ( !mAuth.setAuthorizationReply( mCapabilitiesReply ) )
1938+
{
1939+
mCapabilitiesReply->deleteLater();
1940+
mCapabilitiesReply = nullptr;
1941+
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
1942+
QgsMessageLog::logMessage( mError, tr( "WMS" ) );
1943+
return false;
1944+
}
19371945
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );
19381946
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );
19391947

@@ -2002,7 +2010,19 @@ void QgsWmsCapabilitiesDownload::capabilitiesReplyFinished()
20022010

20032011
QgsDebugMsg( QString( "redirected getcapabilities: %1 forceRefresh=%2" ).arg( redirect.toString() ).arg( mForceRefresh ) );
20042012
mCapabilitiesReply = QgsNetworkAccessManager::instance()->get( request );
2005-
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );
2013+
2014+
if ( !mAuth.setAuthorizationReply( mCapabilitiesReply ) )
2015+
{
2016+
mHttpCapabilitiesResponse.clear();
2017+
mCapabilitiesReply->deleteLater();
2018+
mCapabilitiesReply = nullptr;
2019+
mError = tr( "Download of capabilities failed: network reply update failed for authentication config" );
2020+
QgsMessageLog::logMessage( mError, tr( "WMS" ) );
2021+
emit downloadFinished();
2022+
return;
2023+
}
2024+
2025+
connect( mCapabilitiesReply, SIGNAL( finished() ), this, SLOT( capabilitiesReplyFinished() ), Qt::DirectConnection );
20062026
connect( mCapabilitiesReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( capabilitiesReplyProgress( qint64, qint64 ) ), Qt::DirectConnection );
20072027
return;
20082028
}

src/providers/wms/qgswmscapabilities.h

+9
Original file line numberDiff line numberDiff line change
@@ -455,6 +455,15 @@ struct QgsWmsAuthorization
455455
}
456456
return true;
457457
}
458+
//! set authorization reply
459+
bool setAuthorizationReply( QNetworkReply * reply ) const
460+
{
461+
if ( !mAuthCfg.isEmpty() )
462+
{
463+
return QgsAuthManager::instance()->updateNetworkReply( reply, mAuthCfg );
464+
}
465+
return true;
466+
}
458467

459468
//! Username for basic http authentication
460469
QString mUserName;

src/providers/wms/qgswmsprovider.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -2805,6 +2805,7 @@ void QgsWmsProvider::identifyReplyFinished()
28052805

28062806
QgsDebugMsg( QString( "redirected getfeatureinfo: %1" ).arg( redirect.toString() ) );
28072807
mIdentifyReply = QgsNetworkAccessManager::instance()->get( QNetworkRequest( redirect.toUrl() ) );
2808+
mSettings.authorization().setAuthorizationReply( mIdentifyReply );
28082809
mIdentifyReply->setProperty( "eventLoop", QVariant::fromValue( qobject_cast<QObject *>( loop ) ) );
28092810
connect( mIdentifyReply, SIGNAL( finished() ), this, SLOT( identifyReplyFinished() ) );
28102811
return;
@@ -3733,6 +3734,7 @@ QgsWmsLegendDownloadHandler::startUrl( const QUrl& url )
37333734
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
37343735

37353736
mReply = mNetworkAccessManager.get( request );
3737+
mSettings.authorization().setAuthorizationReply( mReply );
37363738
connect( mReply, SIGNAL( error( QNetworkReply::NetworkError ) ), this, SLOT( errored( QNetworkReply::NetworkError ) ) );
37373739
connect( mReply, SIGNAL( finished() ), this, SLOT( finished() ) );
37383740
connect( mReply, SIGNAL( downloadProgress( qint64, qint64 ) ), this, SLOT( progressed( qint64, qint64 ) ) );

0 commit comments

Comments
 (0)