mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-18 16:36:15 +00:00
update permission check when set an exist repo as personal/gorup wiki repo
This commit is contained in:
@@ -54,7 +54,7 @@ from seahub.utils import render_error, render_permission_error, string2list, \
|
||||
calc_file_path_hash, is_valid_username, send_html_email, is_org_context
|
||||
from seahub.utils.file_types import IMAGE
|
||||
from seahub.utils.paginator import Paginator
|
||||
from seahub.views import is_registered_user
|
||||
from seahub.views import is_registered_user, check_folder_permission
|
||||
from seahub.views.modules import get_enabled_mods_by_group, MOD_GROUP_WIKI, \
|
||||
enable_mod_for_group, disable_mod_for_group, get_available_mods_by_group, \
|
||||
get_wiki_enabled_group_list
|
||||
@@ -533,6 +533,10 @@ def group_wiki_use_lib(request, group):
|
||||
messages.error(request, _('Failed to set wiki library.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
if check_folder_permission(request, repo_id, '/') != 'rw':
|
||||
messages.error(request, _('Permission denied.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
GroupWiki.objects.save_group_wiki(group_id=group.id, repo_id=repo_id)
|
||||
|
||||
# create home page if not exist
|
||||
|
@@ -37,6 +37,7 @@ from seahub.wiki import get_personal_wiki_page, get_personal_wiki_repo, \
|
||||
from seahub.wiki.forms import WikiCreateForm, WikiNewPageForm
|
||||
from seahub.wiki.utils import clean_page_name, page_name_to_file_name
|
||||
from seahub.utils import render_error
|
||||
from seahub.views import check_folder_permission
|
||||
|
||||
# Get an instance of a logger
|
||||
logger = logging.getLogger(__name__)
|
||||
@@ -166,6 +167,7 @@ def personal_wiki_create(request):
|
||||
def personal_wiki_use_lib(request):
|
||||
if request.method != 'POST':
|
||||
raise Http404
|
||||
|
||||
repo_id = request.POST.get('dst_repo', '')
|
||||
username = request.user.username
|
||||
next = reverse('personal_wiki', args=[])
|
||||
@@ -174,6 +176,10 @@ def personal_wiki_use_lib(request):
|
||||
messages.error(request, _('Failed to set wiki library.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
if check_folder_permission(request, repo_id, '/') != 'rw':
|
||||
messages.error(request, _('Permission denied.'))
|
||||
return HttpResponseRedirect(next)
|
||||
|
||||
PersonalWiki.objects.save_personal_wiki(username=username, repo_id=repo_id)
|
||||
|
||||
# create home page if not exist
|
||||
|
@@ -21,7 +21,22 @@ class PersonalWikiTest(BaseTestCase):
|
||||
|
||||
resp = self.client.get(reverse('personal_wiki'))
|
||||
self.assertEqual(302, resp.status_code)
|
||||
self.assertRedirects(resp, reverse('personal_wiki', args=['home']))
|
||||
|
||||
def test_invalid_permisison(self):
|
||||
self.login_as(self.admin)
|
||||
|
||||
data = {'dst_repo': self.repo.id}
|
||||
resp = self.client.post(reverse('personal_wiki_use_lib'), data)
|
||||
assert 'Permission denied.' in str(resp.cookies)
|
||||
self.assertEqual(302, resp.status_code)
|
||||
|
||||
def test_invalid_repo(self):
|
||||
self.login_as(self.user)
|
||||
|
||||
data = {'dst_repo': self.repo.id[:30] + '123456'}
|
||||
resp = self.client.post(reverse('personal_wiki_use_lib'), data)
|
||||
assert 'Failed to set wiki library.' in str(resp.cookies)
|
||||
self.assertEqual(302, resp.status_code)
|
||||
|
||||
def test_home_page(self):
|
||||
self.login_as(self.user)
|
||||
|
Reference in New Issue
Block a user