diff --git a/src/app/admin/comments/delete-action.ts b/src/app/admin/comments/delete-action.ts
new file mode 100644
index 0000000..1d60bee
--- /dev/null
+++ b/src/app/admin/comments/delete-action.ts
@@ -0,0 +1,19 @@
+"use server";
+
+import { headers } from "next/headers";
+import { auth } from "@/lib/auth";
+import { prisma } from "@/lib/prisma";
+import { revalidatePath } from "next/cache";
+
+export async function deleteComment(commentId: string): Promise<{ ok: boolean }> {
+ const session = await auth.api.getSession({ headers: await headers() });
+ if (!session || session.user.role !== "admin") throw new Error("Нет доступа");
+
+ await prisma.lessonComment.update({
+ where: { id: commentId },
+ data: { deleted: true },
+ });
+
+ revalidatePath("/admin/comments");
+ return { ok: true };
+}
diff --git a/src/app/admin/comments/page.tsx b/src/app/admin/comments/page.tsx
index b09a00c..4ca1f42 100644
--- a/src/app/admin/comments/page.tsx
+++ b/src/app/admin/comments/page.tsx
@@ -2,6 +2,9 @@ import { prisma } from "@/lib/prisma";
import Link from "next/link";
import { Suspense } from "react";
import { CommentsTable } from "@/components/admin/comments-table";
+import { auth } from "@/lib/auth";
+import { headers } from "next/headers";
+import { redirect } from "next/navigation";
export const metadata = { title: "Комментарии" };
@@ -12,6 +15,9 @@ interface Props {
}
export default async function AdminCommentsPage({ searchParams }: Props) {
+ const session = await auth.api.getSession({ headers: await headers() });
+ if (!session || session.user.role !== "admin") redirect("/dashboard");
+
const { page = "1", search = "" } = await searchParams;
const currentPage = Math.max(1, parseInt(page) || 1);
const skip = (currentPage - 1) * PAGE_SIZE;
@@ -106,7 +112,7 @@ export default async function AdminCommentsPage({ searchParams }: Props) {
{currentPage < totalPages && (
→
)}
- стр. {currentPage} из {totalPages}
+ Страница {currentPage} из {totalPages} · Всего: {total}
)}