Skip to content

Commit f5fe5f7

Browse files
author
jef
committed
fix #3401
git-svn-id: http://svn.osgeo.org/qgis/trunk@15036 c8812cc2-4d05-0410-92ff-de0c093fc19c
1 parent 754b5b2 commit f5fe5f7

File tree

3 files changed

+24
-3
lines changed

3 files changed

+24
-3
lines changed

src/core/qgsdatasourceuri.cpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -200,6 +200,11 @@ QString QgsDataSourceURI::removePassword( const QString& aUri )
200200
regexp.setPattern( " password=.* " );
201201
safeName.replace( regexp, " " );
202202
}
203+
else if ( aUri.contains( ",password=" ) )
204+
{
205+
regexp.setPattern( ",password=.*," );
206+
safeName.replace( regexp, "," );
207+
}
203208
else if ( aUri.contains( "IDB:" ) )
204209
{
205210
regexp.setPattern( " pass=.* " );

src/providers/wms/qgswmsprovider.cpp

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,8 @@ QgsWmsProvider::QgsWmsProvider( QString const &uri )
8282
, mCacheHits( 0 )
8383
, mCacheMisses( 0 )
8484
, mErrors( 0 )
85+
, mUserName( QString::null )
86+
, mPassword( QString::null )
8587
{
8688
// URL may contain username/password information for a WMS
8789
// requiring authentication. In this case the URL is prefixed
@@ -113,8 +115,6 @@ void QgsWmsProvider::parseUri( QString uri )
113115
// Strip off and store the user name and password (if they exist)
114116
if ( !uri.startsWith( " http:" ) )
115117
{
116-
mUserName = "";
117-
mPassword = "";
118118
mTiled = false;
119119
mTileWidth = 0;
120120
mTileHeight = 0;
@@ -176,7 +176,6 @@ void QgsWmsProvider::parseUri( QString uri )
176176
}
177177
}
178178
}
179-
180179
}
181180
}
182181

@@ -520,6 +519,7 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, i
520519

521520
QgsDebugMsg( QString( "getmap: %1" ).arg( url ) );
522521
QNetworkRequest request( url );
522+
setAuthorization( request );
523523
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
524524
cacheReply = QgsNetworkAccessManager::instance()->get( request );
525525
connect( cacheReply, SIGNAL( finished() ), this, SLOT( cacheReplyFinished() ) );
@@ -638,6 +638,7 @@ QImage *QgsWmsProvider::draw( QgsRectangle const &viewExtent, int pixelWidth, i
638638
turl += urlargs;
639639

640640
QNetworkRequest request( turl );
641+
setAuthorization( request );
641642
QgsDebugMsg( QString( "tileRequest %1 %2/%3: %4" ).arg( mTileReqNo ).arg( i++ ).arg( n ).arg( turl ) );
642643
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache );
643644
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
@@ -711,6 +712,7 @@ void QgsWmsProvider::tileReplyFinished()
711712
if ( !redirect.isNull() )
712713
{
713714
QNetworkRequest request( redirect.toUrl() );
715+
setAuthorization( request );
714716
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferCache );
715717
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
716718
request.setAttribute( static_cast<QNetworkRequest::Attribute>( QNetworkRequest::User + 0 ), tileReqNo );
@@ -859,6 +861,7 @@ bool QgsWmsProvider::retrieveServerCapabilities( bool forceRefresh )
859861
mError = "";
860862

861863
QNetworkRequest request( url );
864+
setAuthorization( request );
862865
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork );
863866
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
864867

@@ -925,6 +928,7 @@ void QgsWmsProvider::capabilitiesReplyFinished()
925928
emit statusChanged( tr( "Capabilities request redirected." ) );
926929

927930
QNetworkRequest request( redirect.toUrl() );
931+
setAuthorization( request );
928932
request.setAttribute( QNetworkRequest::CacheLoadControlAttribute, QNetworkRequest::PreferNetwork );
929933
request.setAttribute( QNetworkRequest::CacheSaveControlAttribute, true );
930934

@@ -2831,6 +2835,14 @@ void QgsWmsProvider::reloadData()
28312835
cachedImage = 0;
28322836
}
28332837

2838+
void QgsWmsProvider::setAuthorization( QNetworkRequest &request ) const
2839+
{
2840+
if ( !mUserName.isNull() || !mPassword.isNull() )
2841+
{
2842+
request.setRawHeader( "Authorization", "Basic " + QString( "%1:%2" ).arg( mUserName ).arg( mPassword ).toAscii().toBase64() );
2843+
}
2844+
}
2845+
28342846
/**
28352847
* Class factory to return a pointer to a newly created
28362848
* QgsWmsProvider object

src/providers/wms/qgswmsprovider.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
class QgsCoordinateTransform;
3434
class QNetworkAccessManager;
3535
class QNetworkReply;
36+
class QNetworkRequest;
3637

3738
/*
3839
* The following structs reflect the WMS XML schema,
@@ -751,6 +752,9 @@ class QgsWmsProvider : public QgsRasterDataProvider
751752

752753
QString layerMetadata( QgsWmsLayerProperty &layer );
753754

755+
//! set authorization header
756+
void setAuthorization( QNetworkRequest &request ) const;
757+
754758
//! Data source URI of the WMS for this layer
755759
QString httpuri;
756760

0 commit comments

Comments
 (0)