# HG changeset patch # User Ludovic Chabant # Date 1539067622 25200 # Node ID 93d84f2c2b31a3f3d41619a89ce5615e9821eee5 # Parent dbe22d170cf7ecfe18890dc8f8835d8fd4c8511d web: Prevent editing pages in a read-only endpoint. diff -r dbe22d170cf7 -r 93d84f2c2b31 wikked/webimpl/__init__.py --- a/wikked/webimpl/__init__.py Mon Oct 08 23:46:08 2018 -0700 +++ b/wikked/webimpl/__init__.py Mon Oct 08 23:47:02 2018 -0700 @@ -85,6 +85,15 @@ if check_perms is not None: user, modes = check_perms + + if 'edit' in modes: + endpoint, path = split_page_url(url) + if endpoint: + epinfo = wiki.getEndpoint(endpoint) + if epinfo is not None and epinfo.readonly: + msg = "The '%s' endpoint is read-only." % endpoint + raise UserPermissionError('edit', msg) + has_page_perm = page.wiki.auth.hasPagePermission for mode in modes.split(','): if not has_page_perm(page, user, PERM_NAMES[mode]):