mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-08 02:10:24 +00:00
add is_dir_downloadable check when download folder (#4590)
Co-authored-by: lian <lian@seafile.com>
This commit is contained in:
@@ -72,7 +72,13 @@ class ZipTaskView(APIView):
|
|||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
|
||||||
# permission check
|
# permission check
|
||||||
if not check_folder_permission(request, repo_id, parent_dir):
|
repo_folder_permission = check_folder_permission(request, repo_id, parent_dir)
|
||||||
|
if not repo_folder_permission:
|
||||||
|
error_msg = 'Permission denied.'
|
||||||
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
|
if not json.loads(seafile_api.is_dir_downloadable(repo_id, parent_dir,
|
||||||
|
request.user.username, repo_folder_permission))['is_downloadable']:
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
@@ -192,7 +198,13 @@ class ZipTaskView(APIView):
|
|||||||
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
|
||||||
|
|
||||||
# permission check
|
# permission check
|
||||||
if parse_repo_perm(check_folder_permission(request, repo_id, parent_dir)).can_download is False:
|
repo_folder_permission = check_folder_permission(request, repo_id, parent_dir)
|
||||||
|
if parse_repo_perm(repo_folder_permission).can_download is False:
|
||||||
|
error_msg = 'Permission denied.'
|
||||||
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
|
if not json.loads(seafile_api.is_dir_downloadable(repo_id, parent_dir,
|
||||||
|
request.user.username, repo_folder_permission))['is_downloadable']:
|
||||||
error_msg = 'Permission denied.'
|
error_msg = 'Permission denied.'
|
||||||
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
|
||||||
|
|
||||||
|
@@ -27,6 +27,10 @@ class ZipTaskViewTest(BaseTestCase):
|
|||||||
self.remove_repo()
|
self.remove_repo()
|
||||||
|
|
||||||
def test_can_get_download_dir_zip_token(self):
|
def test_can_get_download_dir_zip_token(self):
|
||||||
|
|
||||||
|
if not LOCAL_PRO_DEV_ENV:
|
||||||
|
return
|
||||||
|
|
||||||
self.login_as(self.user)
|
self.login_as(self.user)
|
||||||
|
|
||||||
parent_dir = '/'
|
parent_dir = '/'
|
||||||
@@ -41,6 +45,9 @@ class ZipTaskViewTest(BaseTestCase):
|
|||||||
|
|
||||||
def test_can_get_download_multi_zip_token(self):
|
def test_can_get_download_multi_zip_token(self):
|
||||||
|
|
||||||
|
if not LOCAL_PRO_DEV_ENV:
|
||||||
|
return
|
||||||
|
|
||||||
# create another folder for download multi
|
# create another folder for download multi
|
||||||
another_folder_name = 'another_folder_name'
|
another_folder_name = 'another_folder_name'
|
||||||
seafile_api.post_dir(repo_id=self.repo.id,
|
seafile_api.post_dir(repo_id=self.repo.id,
|
||||||
@@ -61,6 +68,10 @@ class ZipTaskViewTest(BaseTestCase):
|
|||||||
assert len(json_resp['zip_token']) == 36
|
assert len(json_resp['zip_token']) == 36
|
||||||
|
|
||||||
def test_can_get_zip_token_with_invalid_repo_permission(self):
|
def test_can_get_zip_token_with_invalid_repo_permission(self):
|
||||||
|
|
||||||
|
if not LOCAL_PRO_DEV_ENV:
|
||||||
|
return
|
||||||
|
|
||||||
self.login_as(self.admin)
|
self.login_as(self.admin)
|
||||||
|
|
||||||
parent_dir = '/'
|
parent_dir = '/'
|
||||||
|
Reference in New Issue
Block a user