Allow admin to preview unpublished lessons without enrollment

- Course layout skips enrollment and published checks for admin role
- Lesson page skips published filter for admin role
- Enables admin preview button to work for any lesson/course state

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-07 12:57:18 +05:00
parent 4183a912e4
commit c88b5d2004
2 changed files with 17 additions and 8 deletions
+11 -7
View File
@@ -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 (