Skip to content

Commit a9d4f88

Browse files
committed
Add support for restricted viewer assets via viewer_asset resource permissions
1 parent 27a2bfa commit a9d4f88

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

src/qwc2_viewer.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -631,13 +631,27 @@ def __update_service_urls(self, themes):
631631
for subdir in themes.get('subdirs', []):
632632
self.__update_service_urls(subdir)
633633

634-
def qwc2_assets(self, path, lang):
634+
def qwc2_assets(self, path, identity, lang):
635635
"""Return QWC2 asset from assets/ or temporary image dir.
636636
637637
:param str path: Asset path
638638
:param str lang: Asset language
639639
"""
640+
restricted_viewer_assets = self.resources['qwc2_config'].get(
641+
'restricted_viewer_assets', []
642+
)
643+
644+
# get permitted viewer tasks
645+
permitted_viewer_assets = self.permissions_handler.resource_permissions(
646+
'viewer_assets', identity
647+
)
648+
649+
if path in restricted_viewer_assets and not path in permitted_viewer_assets:
650+
self.logger.debug("Asset %s is not permitted, returning 404" % path)
651+
return abort(404)
652+
640653
if not path.startswith(self.BASE64_IMAGE_ROUTE_PREFIX):
654+
641655
# Special case for ui files: return translated UI
642656
if path.lower().endswith('.ui'):
643657
return self.translate_designer_form(path, lang)

src/server.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -100,11 +100,12 @@ def qwc2_themes():
100100

101101

102102
@app.route('/assets/<path:path>')
103+
@optional_auth
103104
# lang: Optional, asset language, i.e. en-US
104105
def qwc2_assets(path):
105106
qwc2_viewer = qwc2_viewer_handler()
106107
lang = request.args.get('lang', None)
107-
return qwc2_viewer.qwc2_assets(path, lang)
108+
return qwc2_viewer.qwc2_assets(path, get_identity(), lang)
108109

109110
@app.route('/data/<path:path>')
110111
def qwc2_data(path):

0 commit comments

Comments
 (0)