68 lines
2.0 KiB
TypeScript
68 lines
2.0 KiB
TypeScript
import { prisma } from "@repo/db";
|
|
import { getServerSession } from "../../api/auth/[...nextauth]/auth";
|
|
import { ProfileForm, SocialForm, PasswordForm, PilotForm, DeleteForm } from "./_components/forms";
|
|
import { GearIcon } from "@radix-ui/react-icons";
|
|
import { Error } from "_components/Error";
|
|
|
|
export default async function Page() {
|
|
const session = await getServerSession();
|
|
if (!session)
|
|
return <Error statusCode={401} title="Du musst angemeldet sein, um diese Seite zu sehen." />;
|
|
const user = await prisma.user.findFirst({
|
|
where: {
|
|
id: session.user.id,
|
|
Penaltys: {
|
|
some: {
|
|
until: {
|
|
gte: new Date(),
|
|
},
|
|
suspended: false,
|
|
},
|
|
},
|
|
},
|
|
include: {
|
|
discordAccounts: true,
|
|
Penaltys: true,
|
|
},
|
|
});
|
|
const userPenaltys = await prisma.penalty.findMany({
|
|
where: {
|
|
userId: session.user.id,
|
|
until: {
|
|
gte: new Date(),
|
|
},
|
|
type: {
|
|
in: ["TIME_BAN", "BAN"],
|
|
},
|
|
|
|
suspended: false,
|
|
},
|
|
});
|
|
if (!user) return <Error statusCode={401} title="Dein Account wurde nicht gefunden" />;
|
|
const discordAccount = user?.discordAccounts[0];
|
|
return (
|
|
<div className="grid grid-cols-6 gap-4">
|
|
<div className="col-span-full">
|
|
<p className="text-2xl font-semibold text-left flex items-center gap-2">
|
|
<GearIcon className="w-5 h-5" /> Einstellungen
|
|
</p>
|
|
</div>
|
|
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
|
|
<ProfileForm user={user} penaltys={userPenaltys} />
|
|
</div>
|
|
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
|
|
<SocialForm discordAccount={discordAccount} user={user} />
|
|
</div>
|
|
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
|
|
<PasswordForm />
|
|
</div>
|
|
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
|
|
<PilotForm user={user} />
|
|
</div>
|
|
<div className="card bg-base-200 shadow-xl mb-4 col-span-6 xl:col-span-3">
|
|
<DeleteForm user={user} penaltys={userPenaltys} />
|
|
</div>
|
|
</div>
|
|
);
|
|
}
|