import { serve } from "https://deno.land/std@0.190.0/http/server.ts"; import { createClient } from "https://esm.sh/@supabase/supabase-js@2"; const corsHeaders = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "authorization, x-client-info, apikey, content-type", }; interface DeleteUserRequest { user_id: string; } serve(async (req: Request) => { if (req.method === "OPTIONS") { return new Response(null, { headers: corsHeaders }); } try { const body: DeleteUserRequest = await req.json(); const { user_id } = body; if (!user_id) { return new Response( JSON.stringify({ success: false, message: "user_id is required" }), { status: 400, headers: { ...corsHeaders, "Content-Type": "application/json" } } ); } const supabaseUrl = Deno.env.get("SUPABASE_URL")!; const supabaseServiceKey = Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!; const supabase = createClient(supabaseUrl, supabaseServiceKey, { auth: { autoRefreshToken: false, persistSession: false } }); console.log(`Deleting user from auth.users: ${user_id}`); // Delete user from auth.users using admin API const { error: deleteError } = await supabase.auth.admin.deleteUser(user_id); if (deleteError) { console.error('Error deleting user from auth.users:', deleteError); throw new Error(`Failed to delete user from auth: ${deleteError.message}`); } console.log(`Successfully deleted user: ${user_id}`); return new Response( JSON.stringify({ success: true, message: "User deleted successfully" }), { status: 200, headers: { ...corsHeaders, "Content-Type": "application/json" } } ); } catch (error: any) { console.error("Error deleting user:", error); return new Response( JSON.stringify({ success: false, message: error.message }), { status: 500, headers: { ...corsHeaders, "Content-Type": "application/json" } } ); } });