From 76ea4fc1aec6a47e43d63c52eb0ba6fe7f67a558 Mon Sep 17 00:00:00 2001 From: Jannat Patel Date: Fri, 17 May 2024 18:03:04 +0530 Subject: [PATCH] fix: edit permission and other issues --- frontend/src/components/CourseCardOverlay.vue | 10 +++++- frontend/src/components/Quiz.vue | 3 +- frontend/src/components/UserDropdown.vue | 7 +++- frontend/src/pages/CreateCourse.vue | 34 ++++++++++++++++--- frontend/src/pages/Lesson.vue | 8 +++++ frontend/src/pages/ProfileEvaluator.vue | 2 +- .../lms_quiz_result/lms_quiz_result.json | 4 +-- .../certificate_request_reminder.html | 2 +- 8 files changed, 58 insertions(+), 12 deletions(-) diff --git a/frontend/src/components/CourseCardOverlay.vue b/frontend/src/components/CourseCardOverlay.vue index 630faadc..5608b0d7 100644 --- a/frontend/src/components/CourseCardOverlay.vue +++ b/frontend/src/components/CourseCardOverlay.vue @@ -166,5 +166,13 @@ function enrollStudent() { } } -const is_instructor = () => {} +const is_instructor = () => { + let user_is_instructor = false + props.course.data.instructors.forEach((instructor) => { + if (!user_is_instructor && instructor.name == user.data?.name) { + user_is_instructor = true + } + }) + return user_is_instructor +} diff --git a/frontend/src/components/Quiz.vue b/frontend/src/components/Quiz.vue index 9d7dfba9..5a97d05c 100644 --- a/frontend/src/components/Quiz.vue +++ b/frontend/src/components/Quiz.vue @@ -323,7 +323,6 @@ watch(activeQuestion, (value) => { watch( () => props.quizName, (newName) => { - console.log(newName) if (newName) { quiz.reload() } @@ -392,7 +391,7 @@ const addToLocalStorage = () => { let quizData = JSON.parse(localStorage.getItem(quiz.data.title)) let questionData = { question_index: activeQuestion.value, - answers: getAnswers().join(), + answer: getAnswers().join(), is_correct: showAnswers.filter((answer) => { return answer != undefined }), diff --git a/frontend/src/components/UserDropdown.vue b/frontend/src/components/UserDropdown.vue index 27c3afc8..a1fe9b7e 100644 --- a/frontend/src/components/UserDropdown.vue +++ b/frontend/src/components/UserDropdown.vue @@ -26,7 +26,12 @@ " >
- + {{ branding.data?.brand_name }} Learning diff --git a/frontend/src/pages/CreateCourse.vue b/frontend/src/pages/CreateCourse.vue index 85d56723..8bf6948e 100644 --- a/frontend/src/pages/CreateCourse.vue +++ b/frontend/src/pages/CreateCourse.vue @@ -126,7 +126,10 @@
{{ __('Settings') }}
-
+
{ - if (!user.data?.is_moderator && !user.data?.is_instructor) { + if ( + props.courseName == 'new' && + !user.data?.is_moderator && + !user.data?.is_instructor + ) { router.push({ name: 'Courses' }) } + if (props.courseName !== 'new') { courseResource.reload() } @@ -245,7 +254,7 @@ const courseCreationResource = createResource({ return { doc: { doctype: 'LMS Course', - image: course.course_image.file_url, + image: course.course_image?.file_url || '', ...values, }, } @@ -260,7 +269,7 @@ const courseEditResource = createResource({ doctype: 'LMS Course', name: values.course, fieldname: { - image: course.course_image.file_url, + image: course.course_image?.file_url || '', ...course, }, } @@ -292,6 +301,8 @@ const courseResource = createResource({ } if (data.image) imageResource.reload({ image: data.image }) + instructors.value = data.instructors + check_permission() }, }) @@ -397,6 +408,21 @@ const removeImage = () => { course.course_image = null } +const check_permission = () => { + let user_is_instructor = false + if (user.data?.is_moderator) return + + instructors.value.forEach((instructor) => { + if (!user_is_instructor && instructor.instructor == user.data?.name) { + user_is_instructor = true + } + }) + + if (!user_is_instructor) { + router.push({ name: 'Courses' }) + } +} + const breadcrumbs = computed(() => { let crumbs = [ { diff --git a/frontend/src/pages/Lesson.vue b/frontend/src/pages/Lesson.vue index 120052d8..94b5dd4d 100644 --- a/frontend/src/pages/Lesson.vue +++ b/frontend/src/pages/Lesson.vue @@ -18,12 +18,16 @@ }}

+
@@ -332,6 +336,10 @@ const allowInstructorContent = () => { if (lesson.data?.instructors.includes(user.data?.name)) return true return false } + +const redirectToLogin = () => { + window.location.href = `/login?redirect-to=/lms/courses/${props.courseName}` +}