Files
parakasa/app/(dashboard)/dashboard/users/[userId]/page.tsx
2026-01-10 20:38:06 +03:00

71 lines
2.7 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import { createClient } from "@/lib/supabase-server"
import { UserForm } from "@/components/dashboard/user-form"
import { notFound } from "next/navigation"
export default async function EditUserPage({ params }: { params: { userId: string } }) {
const supabase = createClient()
// Fetch profile
const { data: profile } = await supabase
.from('profiles')
.select('*')
.eq('id', params.userId)
.single()
if (!profile) {
notFound()
}
// We also need the email, which is in auth.users, but we can't select from there easily with RLS/Client if not admin API
// However, our logged in user IS admin, but RLS on auth.users is usually strict.
// Let's see if we can get it via RPC or if the profile should store email (bad practice duplication, but helpful).
// Actually, `supabaseAdmin` in a server action can get it, but here we are in a Page (Server Component).
// We can use `supabaseAdmin` here too if we create a utility for it or just import createClient from supabase-js with admin key.
// WORKAROUND: For now, let's assume we might need a server function to fetch full user details including email
// OR we just update the profile part. But the user wants to update email probably.
// Let's write a small server action/function to fetch this data securely to render the form.
// Better: Helper function to get user details
const userDetails = await getUserDetails(params.userId)
return (
<div className="flex-1 space-y-4 p-8 pt-6">
<div className="flex items-center justify-between space-y-2">
<h2 className="text-3xl font-bold tracking-tight">Kullanıcı Düzenle</h2>
</div>
<UserForm initialData={userDetails} />
</div>
)
}
// Helper to get admin-level data for the form
import { createClient as createSupabaseClient } from "@supabase/supabase-js"
async function getUserDetails(userId: string) {
const supabaseAdmin = createSupabaseClient(
process.env.NEXT_PUBLIC_SUPABASE_URL!,
process.env.SUPABASE_SERVICE_ROLE_KEY!,
{ auth: { autoRefreshToken: false, persistSession: false } }
)
const { data: { user }, error } = await supabaseAdmin.auth.admin.getUserById(userId)
const { data: profile } = await supabaseAdmin.from('profiles').select('*').eq('id', userId).single()
if (error || !user || !profile) return undefined
// Split full name
const parts = (profile.full_name || "").split(' ')
const firstName = parts[0] || ""
const lastName = parts.slice(1).join(' ') || ""
return {
id: userId,
firstName,
lastName,
email: user.email || "",
role: profile.role as "admin" | "user",
phone: profile.phone || ""
}
}