'use server' import { createAdminClient } from '@/lib/supabase/admin' import { revalidatePath } from 'next/cache' export async function getUsers() { const admin = createAdminClient() const { data: { users }, error } = await admin.auth.admin.listUsers() if (error) throw error return users } export async function createUser(data: { email: string; password?: string; email_confirm?: boolean }) { const admin = createAdminClient() const { data: { user }, error } = await admin.auth.admin.createUser({ email: data.email, password: data.password || Math.random().toString(36).slice(-10), email_confirm: data.email_confirm ?? true, }) if (error) throw error revalidatePath('/admin/users') return user } export async function deleteUser(id: string) { const admin = createAdminClient() const { error } = await admin.auth.admin.deleteUser(id) if (error) throw error revalidatePath('/admin/users') } export async function updateUserStatus(id: string, ban: boolean) { const admin = createAdminClient() const { error } = await admin.auth.admin.updateUserById(id, { ban_duration: ban ? '876000h' : '0h', // 100 years or none }) if (error) throw error revalidatePath('/admin/users') } export async function resetPassword(email: string) { const admin = createAdminClient() // Generate a reset link or send email const { error } = await admin.auth.admin.generateLink({ type: 'recovery', email, }) if (error) throw error // Usually you'd send this link or let Supabase handle it via regular auth.resetPasswordForEmail }