fix: when course is unpublished and not coming either, user should not be able to access the course details

This commit is contained in:
Jannat Patel
2025-09-29 18:09:03 +05:30
parent 63c1fe8e75
commit da076f71a1
2 changed files with 23 additions and 1 deletions

View File

@@ -169,6 +169,7 @@
</div>
</div>
<CourseProgressSummary
v-if="user.data?.is_moderator || is_instructor()"
v-model="showProgressModal"
:courseName="course.data.name"
:enrollments="course.data.enrollments"

View File

@@ -103,9 +103,10 @@ import {
Tooltip,
usePageMeta,
} from 'frappe-ui'
import { computed, watch } from 'vue'
import { computed, inject, watch } from 'vue'
import { Users, Star } from 'lucide-vue-next'
import { sessionStore } from '@/stores/session'
import { useRouter } from 'vue-router'
import CourseCardOverlay from '@/components/CourseCardOverlay.vue'
import CourseOutline from '@/components/CourseOutline.vue'
import CourseReviews from '@/components/CourseReviews.vue'
@@ -114,6 +115,8 @@ import CourseInstructors from '@/components/CourseInstructors.vue'
import RelatedCourses from '@/components/RelatedCourses.vue'
const { brand } = sessionStore()
const router = useRouter()
const user = inject('$user')
const props = defineProps({
courseName: {
@@ -140,6 +143,24 @@ watch(
}
)
watch(course, () => {
if (!isInstructor() && !course.data?.published && !course.data?.upcoming) {
router.push({
name: 'Courses',
})
}
})
const isInstructor = () => {
let user_is_instructor = false
course.data?.instructors.forEach((instructor) => {
if (!user_is_instructor && instructor.name == user.data?.name) {
user_is_instructor = true
}
})
return user_is_instructor
}
const breadcrumbs = computed(() => {
let items = [{ label: 'Courses', route: { name: 'Courses' } }]
items.push({