mirror of
https://github.com/haiwen/seahub.git
synced 2025-09-22 11:57:34 +00:00
update admin repo view check
This commit is contained in:
@@ -187,22 +187,40 @@ def sys_repo_admin(request):
|
|||||||
},
|
},
|
||||||
context_instance=RequestContext(request))
|
context_instance=RequestContext(request))
|
||||||
|
|
||||||
|
def can_view_sys_admin_repo(repo):
|
||||||
|
default_repo_id = get_system_default_repo_id()
|
||||||
|
is_default_repo = True if repo.id == default_repo_id else False
|
||||||
|
|
||||||
|
if is_default_repo:
|
||||||
|
return True
|
||||||
|
elif repo.encrypted:
|
||||||
|
return False
|
||||||
|
elif is_pro_version() and ENABLE_SYS_ADMIN_VIEW_REPO:
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
@sys_staff_required
|
@sys_staff_required
|
||||||
def sys_admin_repo_download_file(request, repo_id):
|
def sys_admin_repo_download_file(request, repo_id):
|
||||||
"""
|
|
||||||
"""
|
|
||||||
repo = seafile_api.get_repo(repo_id)
|
|
||||||
path = request.GET.get('p', '')
|
|
||||||
obj_id = seafile_api.get_file_id_by_path(repo_id, path)
|
|
||||||
|
|
||||||
next = request.META.get('HTTP_REFERER', None)
|
next = request.META.get('HTTP_REFERER', None)
|
||||||
if not next:
|
if not next:
|
||||||
next = reverse('sys_admin_repo')
|
next = reverse('sys_admin_repo')
|
||||||
|
|
||||||
if not repo or repo.encrypted or not is_pro_version() \
|
repo = seafile_api.get_repo(repo_id)
|
||||||
or not ENABLE_SYS_ADMIN_VIEW_REPO or not obj_id:
|
if not repo:
|
||||||
messages.error(request, _(u'Unable to download file'))
|
messages.error(request, _(u'Library does not exist'))
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
path = request.GET.get('p', '')
|
||||||
|
obj_id = seafile_api.get_file_id_by_path(repo_id, path)
|
||||||
|
if not obj_id:
|
||||||
|
messages.error(request, _(u'Unable to download file, invalid file path'))
|
||||||
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
|
if not can_view_sys_admin_repo(repo):
|
||||||
|
messages.error(request, _(u'Unable to view library'))
|
||||||
return HttpResponseRedirect(next)
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
try:
|
try:
|
||||||
@@ -220,21 +238,18 @@ def sys_admin_repo_download_file(request, repo_id):
|
|||||||
@login_required
|
@login_required
|
||||||
@sys_staff_required
|
@sys_staff_required
|
||||||
def sys_admin_repo(request, repo_id):
|
def sys_admin_repo(request, repo_id):
|
||||||
|
|
||||||
next = request.META.get('HTTP_REFERER', None)
|
next = request.META.get('HTTP_REFERER', None)
|
||||||
if not next:
|
if not next:
|
||||||
next = reverse('sys_repo_admin')
|
next = reverse('sys_repo_admin')
|
||||||
|
|
||||||
if not is_pro_version() or not ENABLE_SYS_ADMIN_VIEW_REPO:
|
|
||||||
messages.error(request, _(u'Unable to view library, this feature is not enabled.'))
|
|
||||||
return HttpResponseRedirect(next)
|
|
||||||
|
|
||||||
repo = seafile_api.get_repo(repo_id)
|
repo = seafile_api.get_repo(repo_id)
|
||||||
if not repo:
|
if not repo:
|
||||||
messages.error(request, _(u'Library does not exist'))
|
messages.error(request, _(u'Library does not exist'))
|
||||||
return HttpResponseRedirect(next)
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
if repo.encrypted:
|
if not can_view_sys_admin_repo(repo):
|
||||||
messages.error(request, _(u'Library is encrypted'))
|
messages.error(request, _(u'Unable to view library'))
|
||||||
return HttpResponseRedirect(next)
|
return HttpResponseRedirect(next)
|
||||||
|
|
||||||
path = request.GET.get('p', '/')
|
path = request.GET.get('p', '/')
|
||||||
|
Reference in New Issue
Block a user