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 @@

{{ subtitle }}

- + 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" >
-
- -
-