diff --git a/client/src/components/circle/DocumentListItem.vue b/client/src/components/circle/DocumentListItem.vue
index b11f8327..212fa10a 100644
--- a/client/src/components/circle/DocumentListItem.vue
+++ b/client/src/components/circle/DocumentListItem.vue
@@ -8,7 +8,12 @@
-
+
diff --git a/client/src/pages/cockpit/documentPage/DocumentPage.vue b/client/src/pages/cockpit/documentPage/DocumentPage.vue
index 249d8902..de48a353 100644
--- a/client/src/pages/cockpit/documentPage/DocumentPage.vue
+++ b/client/src/pages/cockpit/documentPage/DocumentPage.vue
@@ -2,7 +2,11 @@
import DocumentListItem from "@/components/circle/DocumentListItem.vue";
import ItDropdownSelect from "@/components/ui/ItDropdownSelect.vue";
import ItModal from "@/components/ui/ItModal.vue";
-import { useCourseData, useCurrentCourseSession } from "@/composables";
+import {
+ useCourseData,
+ useCourseSessionDetailQuery,
+ useCurrentCourseSession,
+} from "@/composables";
import { useExpertCockpitPageData } from "@/pages/cockpit/cockpitPage/composables";
import DocumentUploadForm from "@/pages/cockpit/documentPage/DocumentUploadForm.vue";
import {
@@ -12,6 +16,7 @@ import {
} from "@/services/files";
import { useCourseSessionsStore } from "@/stores/courseSessions";
import { useExpertCockpitStore } from "@/stores/expertCockpit";
+import { useUserStore } from "@/stores/user";
import type { CircleDocument, DocumentUploadData } from "@/types";
import dialog from "@/utils/confirm-dialog";
import { useTranslation } from "i18next-vue";
@@ -21,6 +26,9 @@ import { computed, onMounted, ref, watch } from "vue";
const cockpitStore = useExpertCockpitStore();
const courseSession = useCurrentCourseSession();
const courseSessionsStore = useCourseSessionsStore();
+const courseSessionDetailResult = useCourseSessionDetailQuery();
+const userStore = useUserStore();
+
const courseData = useCourseData(courseSession.value?.course.slug);
const { t } = useTranslation();
@@ -71,6 +79,19 @@ const circleDocuments = computed(() => {
);
});
+const canEditDocuments = computed(() => {
+ const circleExperts = courseSessionDetailResult.filterCircleExperts(
+ cockpitStore.currentCircle?.slug || ""
+ );
+ // hack-ish way to check if the user is an expert for the circle
+ // supervistors are not allowd to edit documents if they are not experts in the circle
+ return circleExperts.some(
+ (expert) =>
+ expert.user_id === userStore.id &&
+ expert.id.indexOf("as-ephemeral-supervisor") === -1
+ );
+});
+
const deleteDocument = async (doc: CircleDocument) => {
const options = {
title: t("circlePage.documents.deleteModalTitle"),
@@ -134,18 +155,22 @@ async function uploadDocument(data: DocumentUploadData) {
@update:model-value="cockpitStore.setCurrentCourseCircleFromEvent"
>
-