Skip to content

Commit 14c468a

Browse files
committed
3-6 Route Validation
1 parent 64b4ca9 commit 14c468a

File tree

1 file changed

+30
-14
lines changed

1 file changed

+30
-14
lines changed

pages/course/chapter/[chapterSlug]/lesson/[lessonSlug].vue

+30-14
Original file line numberDiff line numberDiff line change
@@ -36,32 +36,48 @@
3636
const course = useCourse();
3737
const route = useRoute();
3838
39+
definePageMeta({
40+
validate({ params }) {
41+
const course = useCourse();
42+
43+
const chapter = course.chapters.find(
44+
(chapter) => chapter.slug === params.chapterSlug
45+
);
46+
47+
if (!chapter) {
48+
return createError({
49+
statusCode: 404,
50+
message: 'Chapter not found',
51+
});
52+
}
53+
54+
const lesson = chapter.lessons.find(
55+
(lesson) => lesson.slug === params.lessonSlug
56+
);
57+
58+
if (!lesson) {
59+
return createError({
60+
statusCode: 404,
61+
message: 'Lesson not found',
62+
});
63+
}
64+
65+
return true;
66+
},
67+
});
68+
3969
const chapter = computed(() => {
4070
return course.chapters.find(
4171
(chapter) => chapter.slug === route.params.chapterSlug
4272
);
4373
});
4474
45-
if (!chapter.value) {
46-
throw createError({
47-
statusCode: 404,
48-
message: 'Chapter not found',
49-
});
50-
}
51-
5275
const lesson = computed(() => {
5376
return chapter.value.lessons.find(
5477
(lesson) => lesson.slug === route.params.lessonSlug
5578
);
5679
});
5780
58-
if (!lesson.value) {
59-
throw createError({
60-
statusCode: 404,
61-
message: 'Lesson not found',
62-
});
63-
}
64-
6581
const title = computed(() => {
6682
return `${lesson.value.title} - ${course.title}`;
6783
});

0 commit comments

Comments
 (0)