28 lines
1.2 KiB
TypeScript
28 lines
1.2 KiB
TypeScript
import { eq } from "drizzle-orm";
|
|
import { redirect } from "next/navigation";
|
|
import { connection } from "next/server";
|
|
import { getDb } from "@/db";
|
|
import { users } from "@/db/schema";
|
|
import { SiteHeader } from "@/components/public/site-header";
|
|
import { AdminHeader } from "@/components/admin/admin-header";
|
|
import { ProfileForm } from "@/components/auth/profile-form";
|
|
import { isAuthorizedAdmin } from "@/lib/auth/authorization";
|
|
import { getCustomerSession } from "@/lib/auth/server";
|
|
|
|
export const instant = false;
|
|
|
|
export default async function ProfilePage() {
|
|
await connection();
|
|
const session = await getCustomerSession();
|
|
if (!session) redirect("/login?next=%2Fprofile");
|
|
const [user] = await getDb().select({ name: users.name, email: users.email, image: users.image })
|
|
.from(users).where(eq(users.id, session.user.id)).limit(1);
|
|
if (!user) redirect("/login?next=%2Fprofile");
|
|
return <div className="min-h-svh">{isAuthorizedAdmin(session.user) ? <AdminHeader /> : <SiteHeader />}
|
|
<main className="mx-auto max-w-xl p-4 py-10 sm:p-8">
|
|
<h1 className="mb-6 font-heading text-3xl font-semibold">โปรไฟล์ของฉัน</h1>
|
|
<ProfileForm {...user} />
|
|
</main>
|
|
</div>;
|
|
}
|