1
0
mirror of https://github.com/haiwen/seahub.git synced 2025-09-14 14:21:23 +00:00

repo admin can enable metadata (#6569)

This commit is contained in:
JoinTyang
2024-08-16 17:41:17 +08:00
committed by GitHub
parent 943cbabfb3
commit bdd90fee31
3 changed files with 9 additions and 6 deletions

View File

@@ -322,7 +322,7 @@ class DirColumnNav extends React.Component {
isDisplayFiles={this.state.isDisplayFiles}
/>
</TreeSection>
<DirViews repoID={repoID} currentPath={currentPath} userPerm={userPerm} />
<DirViews repoID={repoID} currentPath={currentPath} userPerm={userPerm} currentRepoInfo={currentRepoInfo} />
<DirOthers
repoID={repoID}
userPerm={userPerm}

View File

@@ -4,7 +4,7 @@ import { gettext } from '../../utils/constants';
import TreeSection from '../tree-section';
import { MetadataStatusManagementDialog, MetadataTreeView, useMetadata } from '../../metadata';
const DirViews = ({ userPerm, repoID, currentPath }) => {
const DirViews = ({ userPerm, repoID, currentPath, currentRepoInfo }) => {
const enableMetadataManagement = useMemo(() => {
return window.app.pageOptions.enableMetadataManagement;
// eslint-disable-next-line react-hooks/exhaustive-deps
@@ -13,8 +13,7 @@ const DirViews = ({ userPerm, repoID, currentPath }) => {
const [showMetadataStatusManagementDialog, setShowMetadataStatusManagementDialog] = useState(false);
const { enableMetadata, updateEnableMetadata, navigation } = useMetadata();
const moreOperations = useMemo(() => {
if (!enableMetadataManagement) return [];
if (userPerm !== 'rw' && userPerm !== 'admin') return [];
if (!enableMetadataManagement || !currentRepoInfo.is_admin) return [];
return [
{ key: 'extended-properties', value: gettext('Extended properties') }
];

View File

@@ -14,6 +14,7 @@ from seahub.views import check_folder_permission
from seahub.repo_metadata.utils import add_init_metadata_task, gen_unique_id, init_metadata, get_sys_columns
from seahub.repo_metadata.metadata_server_api import MetadataServerAPI, list_metadata_view_records
from seahub.utils.timeutils import datetime_to_isoformat_timestr
from seahub.utils.repo import is_repo_admin
from seaserv import seafile_api
@@ -72,6 +73,10 @@ class MetadataManage(APIView):
error_msg = 'Library %s not found.' % repo_id
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
if not is_repo_admin(request.user.username, repo_id):
error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg)
# permission check
permission = check_folder_permission(request, repo_id, '/')
if not permission:
@@ -115,8 +120,7 @@ class MetadataManage(APIView):
return api_error(status.HTTP_404_NOT_FOUND, error_msg)
# permission check
permission = check_folder_permission(request, repo_id, '/')
if not permission:
if not is_repo_admin(request.user.username, repo_id):
error_msg = 'Permission denied.'
return api_error(status.HTTP_403_FORBIDDEN, error_msg)