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:
@@ -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 (
|
||||
|
||||
Reference in New Issue
Block a user