mirror of
https://github.com/cfngc4594/monaco-editor-lsp-next.git
synced 2026-05-31 10:18:52 +00:00
fix(submission): restrict submission access to current user
This commit is contained in:
parent
662e223042
commit
6324cc9aa6
@ -75,8 +75,13 @@ export const getAnalysis = async (
|
||||
);
|
||||
}
|
||||
|
||||
const analysis = await prisma.codeAnalysis.findUnique({
|
||||
where: { submissionId: submissionId },
|
||||
const analysis = await prisma.codeAnalysis.findFirst({
|
||||
where: {
|
||||
submissionId,
|
||||
submission: {
|
||||
userId: session.user.id,
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
if (!analysis) {
|
||||
|
||||
@ -1,4 +1,5 @@
|
||||
import { cn } from "@/lib/utils";
|
||||
import { auth } from "@/lib/auth";
|
||||
import prisma from "@/lib/prisma";
|
||||
import { Locale } from "@/generated/client";
|
||||
import { Label } from "@/components/ui/label";
|
||||
@ -22,17 +23,17 @@ export const DetailTable = async ({ submissionId }: DetailTableProps) => {
|
||||
const t = await getTranslations("DetailsPage");
|
||||
const s = await getTranslations("StatusMessage");
|
||||
const locale = (await getLocale()) as Locale;
|
||||
const submission = await prisma.submission.findUnique({
|
||||
const session = await auth();
|
||||
const userId = session?.user?.id;
|
||||
|
||||
const submission = userId
|
||||
? await prisma.submission.findFirst({
|
||||
where: {
|
||||
id: submissionId,
|
||||
userId,
|
||||
},
|
||||
});
|
||||
const judge = await prisma.judge.findUnique({
|
||||
where: { submissionId },
|
||||
select: {
|
||||
compileOutput: true,
|
||||
},
|
||||
});
|
||||
})
|
||||
: null;
|
||||
|
||||
if (!submission)
|
||||
return (
|
||||
@ -41,6 +42,13 @@ export const DetailTable = async ({ submissionId }: DetailTableProps) => {
|
||||
</div>
|
||||
);
|
||||
|
||||
const judge = await prisma.judge.findUnique({
|
||||
where: { submissionId },
|
||||
select: {
|
||||
compileOutput: true,
|
||||
},
|
||||
});
|
||||
|
||||
const createdAt = new Date(submission.createdAt);
|
||||
const submittedDisplay = formatSubmissionDate(createdAt, locale);
|
||||
|
||||
|
||||
@ -46,7 +46,7 @@ export const SubmissionContent = async ({
|
||||
|
||||
return userId ? (
|
||||
<div className="px-3">
|
||||
<SubmissionTable problemId={problemId} />
|
||||
<SubmissionTable problemId={problemId} userId={userId} />
|
||||
</div>
|
||||
) : (
|
||||
<LoginPromptCard />
|
||||
|
||||
@ -11,13 +11,17 @@ import { SubmissionTableRow } from "@/features/problems/submission/components/ro
|
||||
|
||||
interface SubmissionTableProps {
|
||||
problemId: string;
|
||||
userId: string;
|
||||
}
|
||||
|
||||
export const SubmissionTable = async ({ problemId }: SubmissionTableProps) => {
|
||||
export const SubmissionTable = async ({
|
||||
problemId,
|
||||
userId,
|
||||
}: SubmissionTableProps) => {
|
||||
const t = await getTranslations("SubmissionsTable");
|
||||
|
||||
const submissions = await prisma.submission.findMany({
|
||||
where: { problemId },
|
||||
where: { problemId, userId },
|
||||
orderBy: { createdAt: "desc" },
|
||||
});
|
||||
|
||||
|
||||
Loading…
Reference in New Issue
Block a user