mirror of
https://github.com/directus/directus.git
synced 2026-01-23 21:18:08 -05:00
@@ -74,5 +74,12 @@ export function usePermissions(collection: Ref<string>, item: Ref<any>, isNew: R
|
||||
return fields;
|
||||
});
|
||||
|
||||
return { deleteAllowed, saveAllowed, archiveAllowed, updateAllowed, fields };
|
||||
const revisionsAllowed = computed(() => {
|
||||
if (userStore.state.currentUser?.role?.admin_access === true) return true;
|
||||
return !!permissionsStore.state.permissions.find(
|
||||
(permission) => permission.collection === 'directus_revisions' && permission.action === 'read'
|
||||
);
|
||||
});
|
||||
|
||||
return { deleteAllowed, saveAllowed, archiveAllowed, updateAllowed, fields, revisionsAllowed };
|
||||
}
|
||||
|
||||
@@ -174,7 +174,7 @@
|
||||
<div class="page-description" v-html="marked($t('page_help_collections_item'))" />
|
||||
</sidebar-detail>
|
||||
<revisions-drawer-detail
|
||||
v-if="isNew === false && _primaryKey && hasRevisionsPermissions"
|
||||
v-if="isNew === false && _primaryKey && revisionsAllowed"
|
||||
:collection="collection"
|
||||
:primary-key="_primaryKey"
|
||||
ref="revisionsDrawerDetail"
|
||||
@@ -205,7 +205,6 @@ import i18n from '@/lang';
|
||||
import marked from 'marked';
|
||||
import useShortcut from '@/composables/use-shortcut';
|
||||
import { NavigationGuard } from 'vue-router';
|
||||
import { usePermissionsStore } from '@/stores';
|
||||
import { usePermissions } from '@/composables/use-permissions';
|
||||
|
||||
export default defineComponent({
|
||||
@@ -233,13 +232,6 @@ export default defineComponent({
|
||||
},
|
||||
setup(props) {
|
||||
const form = ref<HTMLElement>();
|
||||
const permissionsStore = usePermissionsStore();
|
||||
|
||||
const hasRevisionsPermissions = computed(() => {
|
||||
return !!permissionsStore.state.permissions.find(
|
||||
(permission) => permission.collection === 'directus_revisions' && permission.action === 'read'
|
||||
);
|
||||
});
|
||||
|
||||
const { collection, primaryKey } = toRefs(props);
|
||||
const { breadcrumb } = useBreadcrumb();
|
||||
@@ -324,7 +316,7 @@ export default defineComponent({
|
||||
return next();
|
||||
};
|
||||
|
||||
const { deleteAllowed, archiveAllowed, saveAllowed, updateAllowed, fields } = usePermissions(
|
||||
const { deleteAllowed, archiveAllowed, saveAllowed, updateAllowed, fields, revisionsAllowed } = usePermissions(
|
||||
collection,
|
||||
item,
|
||||
isNew
|
||||
@@ -379,7 +371,7 @@ export default defineComponent({
|
||||
fields,
|
||||
isSingleton,
|
||||
_primaryKey,
|
||||
hasRevisionsPermissions,
|
||||
revisionsAllowed,
|
||||
};
|
||||
|
||||
function useBreadcrumb() {
|
||||
|
||||
@@ -157,7 +157,7 @@
|
||||
<template #sidebar>
|
||||
<file-info-sidebar-detail :file="item" />
|
||||
<revisions-drawer-detail
|
||||
v-if="isBatch === false && isNew === false && hasRevisionsPermissions"
|
||||
v-if="isBatch === false && isNew === false && revisionsAllowed"
|
||||
collection="directus_files"
|
||||
:primary-key="primaryKey"
|
||||
ref="revisionsDrawerDetail"
|
||||
@@ -195,7 +195,6 @@ import ReplaceFile from '../components/replace-file.vue';
|
||||
import { usePermissions } from '@/composables/use-permissions';
|
||||
import { notify } from '@/utils/notify';
|
||||
import { unexpectedError } from '@/utils/unexpected-error';
|
||||
import { usePermissionsStore } from '@/stores';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'files-item',
|
||||
@@ -235,14 +234,6 @@ export default defineComponent({
|
||||
const { breadcrumb } = useBreadcrumb();
|
||||
const replaceFileDialogActive = ref(false);
|
||||
|
||||
const permissionsStore = usePermissionsStore();
|
||||
|
||||
const hasRevisionsPermissions = computed(() => {
|
||||
return !!permissionsStore.state.permissions.find(
|
||||
(permission) => permission.collection === 'directus_revisions' && permission.action === 'read'
|
||||
);
|
||||
});
|
||||
|
||||
const revisionsDrawerDetail = ref<Vue | null>(null);
|
||||
|
||||
const {
|
||||
@@ -302,7 +293,11 @@ export default defineComponent({
|
||||
|
||||
useShortcut('meta+s', saveAndStay, form);
|
||||
|
||||
const { deleteAllowed, saveAllowed, updateAllowed, fields } = usePermissions(ref('directus_files'), item, isNew);
|
||||
const { deleteAllowed, saveAllowed, updateAllowed, fields, revisionsAllowed } = usePermissions(
|
||||
ref('directus_files'),
|
||||
item,
|
||||
isNew
|
||||
);
|
||||
|
||||
const fieldsFiltered = computed(() => {
|
||||
return fields.value.filter((field: Field) => fieldsDenyList.includes(field.field) === false);
|
||||
@@ -344,7 +339,7 @@ export default defineComponent({
|
||||
updateAllowed,
|
||||
fields,
|
||||
fieldsFiltered,
|
||||
hasRevisionsPermissions,
|
||||
revisionsAllowed,
|
||||
};
|
||||
|
||||
function useBreadcrumb() {
|
||||
|
||||
@@ -151,7 +151,7 @@
|
||||
<template #sidebar>
|
||||
<user-info-sidebar-detail :is-new="isNew" :user="item" />
|
||||
<revisions-drawer-detail
|
||||
v-if="isBatch === false && isNew === false && hasRevisionsPermissions"
|
||||
v-if="isBatch === false && isNew === false && revisionsAllowed"
|
||||
collection="directus_users"
|
||||
:primary-key="primaryKey"
|
||||
ref="revisionsDrawerDetail"
|
||||
@@ -176,7 +176,7 @@ import CommentsSidebarDetail from '@/views/private/components/comments-sidebar-d
|
||||
import useItem from '@/composables/use-item';
|
||||
import SaveOptions from '@/views/private/components/save-options';
|
||||
import api from '@/api';
|
||||
import { useFieldsStore, useCollectionsStore, useUserStore } from '@/stores/';
|
||||
import { useFieldsStore, useCollectionsStore } from '@/stores/';
|
||||
import useFormFields from '@/composables/use-form-fields';
|
||||
import { Field } from '@/types';
|
||||
import UserInfoSidebarDetail from '../components/user-info-sidebar-detail.vue';
|
||||
@@ -187,7 +187,6 @@ import { userName } from '@/utils/user-name';
|
||||
import { usePermissions } from '@/composables/use-permissions';
|
||||
import { unexpectedError } from '@/utils/unexpected-error';
|
||||
import { addTokenToURL } from '@/api';
|
||||
import { usePermissionsStore } from '@/stores';
|
||||
|
||||
export default defineComponent({
|
||||
name: 'users-item',
|
||||
@@ -218,14 +217,6 @@ export default defineComponent({
|
||||
const form = ref<HTMLElement>();
|
||||
const fieldsStore = useFieldsStore();
|
||||
const collectionsStore = useCollectionsStore();
|
||||
const userStore = useUserStore();
|
||||
const permissionsStore = usePermissionsStore();
|
||||
|
||||
const hasRevisionsPermissions = computed(() => {
|
||||
return !!permissionsStore.state.permissions.find(
|
||||
(permission) => permission.collection === 'directus_revisions' && permission.action === 'read'
|
||||
);
|
||||
});
|
||||
|
||||
const { primaryKey } = toRefs(props);
|
||||
const { breadcrumb } = useBreadcrumb();
|
||||
@@ -299,7 +290,7 @@ export default defineComponent({
|
||||
|
||||
const { formFields } = useFormFields(fieldsFiltered);
|
||||
|
||||
const { deleteAllowed, archiveAllowed, saveAllowed, updateAllowed } = usePermissions(
|
||||
const { deleteAllowed, archiveAllowed, saveAllowed, updateAllowed, revisionsAllowed } = usePermissions(
|
||||
ref('directus_users'),
|
||||
item,
|
||||
isNew
|
||||
@@ -351,7 +342,7 @@ export default defineComponent({
|
||||
archiveTooltip,
|
||||
form,
|
||||
userName,
|
||||
hasRevisionsPermissions,
|
||||
revisionsAllowed,
|
||||
};
|
||||
|
||||
function useBreadcrumb() {
|
||||
|
||||
Reference in New Issue
Block a user