Skip to content

Commit 95e829d

Browse files
committed
[BUGFIX][QGIS-Server] Restricted layers and layer id as name are incompatible
If the user checks 'used layer id as name' and specifies 'restricted layers', the restriction is not applied. To fix it, I add the layer ids to the restricted layers list.
1 parent c0e4927 commit 95e829d

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

src/server/qgsserverprojectparser.cpp

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,8 +62,8 @@ QgsServerProjectParser::QgsServerProjectParser( QDomDocument* xmlDoc, const QStr
6262
}
6363
}
6464

65-
mRestrictedLayers = findRestrictedLayers();
6665
mUseLayerIDs = findUseLayerIDs();
66+
mRestrictedLayers = findRestrictedLayers();
6767

6868
mCustomLayerOrder.clear();
6969

@@ -1072,6 +1072,28 @@ QSet<QString> QgsServerProjectParser::findRestrictedLayers() const
10721072
}
10731073
}
10741074
}
1075+
1076+
// wmsLayerRestrictionValues contains LayerIDs
1077+
if ( mUseLayerIDs )
1078+
{
1079+
QDomNodeList legendLayerList = legendElem.elementsByTagName( "legendlayer" );
1080+
for ( int i = 0; i < legendLayerList.size(); ++i )
1081+
{
1082+
//get name
1083+
QDomElement layerElem = legendLayerList.at( i ).toElement();
1084+
QString layerName = layerElem.attribute( "name" );
1085+
if ( restrictedLayerSet.contains( layerName ) ) //match: add layer id
1086+
{
1087+
// get legend layer file element
1088+
QDomNodeList layerfileList = layerElem.elementsByTagName( "legendlayerfile" );
1089+
if ( layerfileList.size() > 0 )
1090+
{
1091+
// add layer id
1092+
restrictedLayerSet.insert( layerfileList.at( 0 ).toElement().attribute( "layerid" ) );
1093+
}
1094+
}
1095+
}
1096+
}
10751097
return restrictedLayerSet;
10761098
}
10771099

0 commit comments

Comments
 (0)