diff --git a/seahub/templates/js/templates.html b/seahub/templates/js/templates.html index fc7b12a214..209b154f7f 100644 --- a/seahub/templates/js/templates.html +++ b/seahub/templates/js/templates.html @@ -238,7 +238,7 @@
  • {% trans "Rename" %}
  • {% trans "Move" %}
  • {% trans "Copy" %}
  • - <% if (app.pageOptions.folder_perm_enabled && is_repo_owner) { %> + <% if (app.pageOptions.folder_perm_enabled && is_repo_owner && !is_virtual) { %>
  • {% trans "Permission" %}
  • <% } %>
  • {% trans "Open via Client" %}
  • diff --git a/seahub/views/ajax.py b/seahub/views/ajax.py index c04576f285..f25249e7de 100644 --- a/seahub/views/ajax.py +++ b/seahub/views/ajax.py @@ -1683,10 +1683,15 @@ def set_user_folder_perm(request, repo_id): return HttpResponse(json.dumps({"error": _('Argument missing')}), status=400, content_type=content_type) - if not seafile_api.get_repo(repo_id): + repo = seafile_api.get_repo(repo_id) + if not repo: return HttpResponse(json.dumps({"error": _('Library does not exist')}), status=400, content_type=content_type) + if repo.is_virtual: + return HttpResponse(json.dumps({"error": _('Permission denied')}), + status=403, content_type=content_type) + if is_org_context(request): repo_owner = seafile_api.get_org_repo_owner(repo_id) else: @@ -1825,10 +1830,15 @@ def set_group_folder_perm(request, repo_id): status=400, content_type=content_type) ## check params - if not seafile_api.get_repo(repo_id): + repo = seafile_api.get_repo(repo_id) + if not repo: return HttpResponse(json.dumps({"error": _('Library does not exist')}), status=400, content_type=content_type) + if repo.is_virtual: + return HttpResponse(json.dumps({"error": _('Permission denied')}), + status=403, content_type=content_type) + if is_org_context(request): repo_owner = seafile_api.get_org_repo_owner(repo_id) else: diff --git a/static/scripts/app/views/dirent.js b/static/scripts/app/views/dirent.js index 7913c3d3c1..f70aa59901 100644 --- a/static/scripts/app/views/dirent.js +++ b/static/scripts/app/views/dirent.js @@ -53,6 +53,7 @@ define([ category: dir.category, repo_id: dir.repo_id, is_repo_owner: dir.is_repo_owner, + is_virtual: dir.is_virtual, can_generate_share_link: app.pageOptions.can_generate_share_link, is_pro: is_pro, file_audit_enabled: file_audit_enabled,