import { auth } from "@/auth"; import { db } from "@/lib/db"; import { redirect } from "next/navigation"; import { generateDownloadUrl } from "@/lib/storage"; import { ChangePasswordForm } from "./change-password-form"; import { SignatureUploader } from "./signature-uploader"; import { SuperUserRequestForm } from "./superuser-request-form"; import type { Metadata } from "next"; export const metadata: Metadata = { title: "My Profile" }; const ROLE_LABELS: Record = { TECHNICAL: "Technical", MANNING: "Manning", ACCOUNTS: "Accounts", MANAGER: "Manager", SUPERUSER: "SuperUser", AUDITOR: "Auditor", ADMIN: "Admin", }; export default async function ProfilePage() { const session = await auth(); if (!session?.user) redirect("/login"); const user = await db.user.findUnique({ where: { id: session.user.id }, select: { id: true, name: true, email: true, employeeId: true, role: true, signatureKey: true, superUserRequests: { orderBy: { createdAt: "desc" }, take: 1, select: { status: true, createdAt: true }, }, }, }); if (!user) redirect("/login"); const canHaveSignature = user.role === "MANAGER" || user.role === "SUPERUSER"; const canRequestSuperUser = user.role !== "SUPERUSER" && user.role !== "ADMIN"; const signatureUrl = user.signatureKey ? await generateDownloadUrl(user.signatureKey) : null; const latestRequest = user.superUserRequests[0] ?? null; return (

My Profile

Manage your account settings

{/* Account Info */}

Account Information

Name
{user.name}
Email
{user.email}
Employee ID
{user.employeeId}
Role
{ROLE_LABELS[user.role] ?? user.role}
{/* Change Password */}

Change Password

{/* Signature (managers & superusers) */} {canHaveSignature && (

Approval Signature

Your signature is embedded in approved PO documents (PDF and XLSX). {!user.signatureKey && ( A signature is required to approve purchase orders. )}

)} {/* SuperUser access request */} {canRequestSuperUser && (

SuperUser Access

)}
); }