diff --git a/console/src/modules/contents/_components/ContributorList.vue b/console/src/modules/contents/_components/ContributorList.vue
new file mode 100644
index 0000000000..67dd027691
--- /dev/null
+++ b/console/src/modules/contents/_components/ContributorList.vue
@@ -0,0 +1,39 @@
+
+
+
+
+
diff --git a/console/src/modules/contents/attachments/AttachmentList.vue b/console/src/modules/contents/attachments/AttachmentList.vue
index 92b9599a19..47f2a5f00a 100644
--- a/console/src/modules/contents/attachments/AttachmentList.vue
+++ b/console/src/modules/contents/attachments/AttachmentList.vue
@@ -612,6 +612,11 @@ onMounted(() => {
},
}"
class="text-xs text-gray-500"
+ :class="{
+ 'pointer-events-none': !currentUserHasPermission([
+ 'system:users:view',
+ ]),
+ }"
>
{{ attachment.spec.ownerName }}
diff --git a/console/src/modules/contents/pages/DeletedSinglePageList.vue b/console/src/modules/contents/pages/DeletedSinglePageList.vue
index 4cfc8990a0..38b361a0b8 100644
--- a/console/src/modules/contents/pages/DeletedSinglePageList.vue
+++ b/console/src/modules/contents/pages/DeletedSinglePageList.vue
@@ -9,7 +9,6 @@ import {
VSpace,
Dialog,
VEmpty,
- VAvatar,
VEntity,
VEntityField,
VPageHeader,
@@ -22,11 +21,11 @@ import { ref, watch } from "vue";
import type { ListedSinglePage, SinglePage } from "@halo-dev/api-client";
import { apiClient } from "@/utils/api-client";
import { formatDatetime } from "@/utils/date";
-import { RouterLink } from "vue-router";
import cloneDeep from "lodash.clonedeep";
import { usePermission } from "@/utils/permission";
import { useQuery } from "@tanstack/vue-query";
import { useI18n } from "vue-i18n";
+import ContributorList from "../_components/ContributorList.vue";
const { currentUserHasPermission } = usePermission();
const { t } = useI18n();
@@ -338,25 +337,7 @@ watch(
-
-
-
+
diff --git a/console/src/modules/contents/pages/components/SinglePageListItem.vue b/console/src/modules/contents/pages/components/SinglePageListItem.vue
index 8511f94d71..ac4aff6d30 100644
--- a/console/src/modules/contents/pages/components/SinglePageListItem.vue
+++ b/console/src/modules/contents/pages/components/SinglePageListItem.vue
@@ -5,7 +5,6 @@ import {
IconExternalLinkLine,
VSpace,
Dialog,
- VAvatar,
VStatusDot,
VEntity,
VEntityField,
@@ -25,6 +24,7 @@ import { useMutation, useQueryClient } from "@tanstack/vue-query";
import { useI18n } from "vue-i18n";
import { inject } from "vue";
import type { Ref } from "vue";
+import ContributorList from "../../_components/ContributorList.vue";
const { currentUserHasPermission } = usePermission();
const { t } = useI18n();
@@ -189,23 +189,7 @@ const handleDelete = async () => {
-
-
-
+
diff --git a/console/src/modules/contents/posts/DeletedPostList.vue b/console/src/modules/contents/posts/DeletedPostList.vue
index 5aa5a04321..c6e07737ff 100644
--- a/console/src/modules/contents/posts/DeletedPostList.vue
+++ b/console/src/modules/contents/posts/DeletedPostList.vue
@@ -10,7 +10,6 @@ import {
VPageHeader,
VPagination,
VSpace,
- VAvatar,
VStatusDot,
VEntity,
VEntityField,
@@ -27,6 +26,7 @@ import { usePermission } from "@/utils/permission";
import cloneDeep from "lodash.clonedeep";
import { useQuery } from "@tanstack/vue-query";
import { useI18n } from "vue-i18n";
+import ContributorList from "../_components/ContributorList.vue";
const { currentUserHasPermission } = usePermission();
const { t } = useI18n();
@@ -353,25 +353,7 @@ watch(
-
-
-
+
diff --git a/console/src/modules/contents/posts/components/entity-fields/ContributorsField.vue b/console/src/modules/contents/posts/components/entity-fields/ContributorsField.vue
index 88d213c3f8..148ce8f9af 100644
--- a/console/src/modules/contents/posts/components/entity-fields/ContributorsField.vue
+++ b/console/src/modules/contents/posts/components/entity-fields/ContributorsField.vue
@@ -1,6 +1,7 @@