@@ -1003,6 +1003,7 @@ def permitted_theme_item(self, item, identity):
1003
1003
# combine permissions
1004
1004
permitted_layers = set ()
1005
1005
permitted_print_templates = set ()
1006
+ permitted_3d_tilesets = set ()
1006
1007
for permission in wms_permissions :
1007
1008
# collect permitted layers
1008
1009
permitted_layers .update ([
@@ -1023,6 +1024,7 @@ def permitted_theme_item(self, item, identity):
1023
1024
self .filter_item_theme_info_links (item , identity )
1024
1025
self .filter_item_plugin_data (item , identity )
1025
1026
self .filter_item_snapping_config (item , identity , permitted_layers )
1027
+ self .filter_item_3d_tilesets (item , identity )
1026
1028
1027
1029
return item
1028
1030
@@ -1467,3 +1469,24 @@ def filter_item_snapping_config(self, item, identity, permitted_layers):
1467
1469
item ['snapping' ]['snaplayers' ] = list (
1468
1470
filter (lambda entry : entry ['name' ] in permitted_layers , item ['snapping' ]['snaplayers' ])
1469
1471
)
1472
+
1473
+ def filter_item_3d_tilesets (self , item , identity ):
1474
+ """Filter theme item 3d tilesets by permissions.
1475
+
1476
+ :param obj item: Theme item
1477
+ :param obj identity: User identity
1478
+ """
1479
+ if 'map3d' in item :
1480
+ # get permissions for theme info links
1481
+ permitted_3d_tilesets = \
1482
+ self .permissions_handler .resource_permissions (
1483
+ 'tilesets_3d' , identity
1484
+ )
1485
+
1486
+ # filter theme info links by permissions
1487
+ entries = [
1488
+ entry for entry in item ['map3d' ].get ('tiles3d' , [])
1489
+ if entry ['name' ] in permitted_3d_tilesets
1490
+ ]
1491
+ if entries :
1492
+ item ['map3d' ]['tiles3d' ] = entries
0 commit comments