diff --git a/src/app/(student)/courses/[slug]/layout.tsx b/src/app/(student)/courses/[slug]/layout.tsx index e834773..0a3083f 100644 --- a/src/app/(student)/courses/[slug]/layout.tsx +++ b/src/app/(student)/courses/[slug]/layout.tsx @@ -15,8 +15,10 @@ export default async function CourseLayout({ children, params }: Props) { const session = await auth.api.getSession({ headers: await headers() }); if (!session) redirect("/login"); + const isAdmin = session.user.role === "admin"; + const course = await prisma.course.findUnique({ - where: { slug, published: true }, + where: { slug, ...(isAdmin ? {} : { published: true }) }, include: { modules: { orderBy: { order: "asc" }, @@ -33,14 +35,16 @@ export default async function CourseLayout({ children, params }: Props) { if (!course) notFound(); - const enrollment = await prisma.courseEnrollment.findUnique({ - where: { userId_courseId: { userId: session.user.id, courseId: course.id } }, - }); + if (!isAdmin) { + const enrollment = await prisma.courseEnrollment.findUnique({ + where: { userId_courseId: { userId: session.user.id, courseId: course.id } }, + }); - if (!enrollment) redirect("/dashboard"); + if (!enrollment) redirect("/dashboard"); - if (enrollment.expiresAt && enrollment.expiresAt < new Date()) { - redirect("/dashboard?expired=1"); + if (enrollment.expiresAt && enrollment.expiresAt < new Date()) { + redirect("/dashboard?expired=1"); + } } return ( diff --git a/src/app/(student)/courses/[slug]/lessons/[lessonId]/page.tsx b/src/app/(student)/courses/[slug]/lessons/[lessonId]/page.tsx index b15eae3..087b155 100644 --- a/src/app/(student)/courses/[slug]/lessons/[lessonId]/page.tsx +++ b/src/app/(student)/courses/[slug]/lessons/[lessonId]/page.tsx @@ -1,6 +1,8 @@ import { prisma } from "@/lib/prisma"; import { notFound } from "next/navigation"; import Link from "next/link"; +import { headers } from "next/headers"; +import { auth } from "@/lib/auth"; import { KinescopePlayer } from "@/components/player/kinescope-player"; import { LessonContent } from "@/components/student/lesson-content"; @@ -11,8 +13,11 @@ interface Props { export default async function LessonPage({ params }: Props) { const { slug, lessonId } = await params; + const session = await auth.api.getSession({ headers: await headers() }); + const isAdmin = session?.user.role === "admin"; + const lesson = await prisma.lesson.findUnique({ - where: { id: lessonId, published: true }, + where: { id: lessonId, ...(isAdmin ? {} : { published: true }) }, include: { files: { orderBy: { createdAt: "asc" } }, module: {