From b32fc652362e0e22e42b2eb5f72915d4fa607146 Mon Sep 17 00:00:00 2001 From: Daniel Date: Sat, 11 Apr 2026 02:25:21 +0200 Subject: [PATCH] Fix mark-complete 403 for course creators previewing lessons MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Creators preview courses without enrolling, so markComplete and SCORM onComplete were hitting the progress endpoint and getting 403. Now guarded by enrollment check — buttons hidden and callbacks skipped for non-enrolled users. Co-Authored-By: Claude Opus 4.6 (1M context) --- frontend/src/pages/CourseDetailPage.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/frontend/src/pages/CourseDetailPage.jsx b/frontend/src/pages/CourseDetailPage.jsx index 053d711..29336da 100644 --- a/frontend/src/pages/CourseDetailPage.jsx +++ b/frontend/src/pages/CourseDetailPage.jsx @@ -193,6 +193,7 @@ export default function CourseDetailPage() { } const markComplete = async (lessonId) => { + if (!course.my_enrollment) return try { await api.put(`/courses/${courseId}/lessons/${lessonId}/progress`, { status: 'completed' }) setCompletedLessons(prev => { const n = new Set(prev); n.add(lessonId); return n }) @@ -386,12 +387,12 @@ export default function CourseDetailPage() { )}
- {!completedLessons.has(activeLesson.id) && ( + {enrolled && !completedLessons.has(activeLesson.id) && ( )} - {completedLessons.has(activeLesson.id) && ( + {enrolled && completedLessons.has(activeLesson.id) && ( ✓ Completed @@ -555,7 +556,7 @@ export default function CourseDetailPage() { lessonId={activeLesson.id} courseId={courseId} onComplete={() => { - if (!completedLessons.has(activeLesson.id)) { + if (enrolled && !completedLessons.has(activeLesson.id)) { markComplete(activeLesson.id) } }}