comparison wikked/webimpl/edit.py @ 451:6cd51ea6dfcf

auth: Rewrite permission system and improve support for it. - More proper ACL model for permissions. - Page-level ACL is only specified locally, not inherited anymore. - Protect more API and UI routes with permission checks. - Improve error handling and error pages.
author Ludovic Chabant <ludovic@chabant.com>
date Sun, 07 Jan 2018 11:11:04 -0800
parents 8ca8c2713c92
children faa4c8467291
comparison
equal deleted inserted replaced
450:ab47d3cf5e1e 451:6cd51ea6dfcf
5 from wikked.page import Page, PageData 5 from wikked.page import Page, PageData
6 from wikked.formatter import PageFormatter, FormattingContext 6 from wikked.formatter import PageFormatter, FormattingContext
7 from wikked.resolver import PageResolver 7 from wikked.resolver import PageResolver
8 from wikked.utils import PageNotFoundError 8 from wikked.utils import PageNotFoundError
9 from wikked.webimpl import ( 9 from wikked.webimpl import (
10 CHECK_FOR_WRITE,
11 get_page_or_raise, get_page_meta, make_page_title) 10 get_page_or_raise, get_page_meta, make_page_title)
12 11
13 12
14 logger = logging.getLogger(__name__) 13 logger = logging.getLogger(__name__)
15 14
44 43
45 def get_edit_page(wiki, user, url, author=None, custom_data=None): 44 def get_edit_page(wiki, user, url, author=None, custom_data=None):
46 page = None 45 page = None
47 try: 46 try:
48 page = get_page_or_raise(wiki, url, 47 page = get_page_or_raise(wiki, url,
49 check_perms=(user, CHECK_FOR_WRITE)) 48 check_perms=(user, 'edit'))
50 except PageNotFoundError: 49 except PageNotFoundError:
51 # Only catch errors about the page not existing. Permission 50 # Only catch errors about the page not existing. Permission
52 # errors still go through. 51 # errors still go through.
53 page = None 52 page = None
54 53
78 77
79 78
80 def do_edit_page(wiki, user, url, text, author=None, message=None): 79 def do_edit_page(wiki, user, url, text, author=None, message=None):
81 try: 80 try:
82 get_page_or_raise(wiki, url, 81 get_page_or_raise(wiki, url,
83 check_perms=(user, CHECK_FOR_WRITE)) 82 check_perms=(user, 'edit'))
84 except PageNotFoundError: 83 except PageNotFoundError:
85 # Only catch errors about the page not existing. Permission 84 # Only catch errors about the page not existing. Permission
86 # errors still go through. 85 # errors still go through.
87 pass 86 pass
88 87