41 lines
960 B
TypeScript
41 lines
960 B
TypeScript
import "@supabase/functions-js/edge-runtime.d.ts";
|
|
import { createClient } from "https://esm.sh/@supabase/supabase-js@2";
|
|
|
|
Deno.serve(async () => {
|
|
const supabase = createClient(
|
|
Deno.env.get("SUPABASE_URL")!,
|
|
Deno.env.get("SUPABASE_SERVICE_ROLE_KEY")!,
|
|
);
|
|
|
|
const fiveMinutesAgo = new Date(Date.now() - 24 * 60 * 60 * 1000);
|
|
|
|
const { data, error } = await supabase.auth.admin.listUsers();
|
|
|
|
if (error) {
|
|
return new Response(
|
|
JSON.stringify({ error: error.message }),
|
|
{ status: 500 },
|
|
);
|
|
}
|
|
|
|
const users = data.users;
|
|
|
|
const targetUsers = users.filter((user) => {
|
|
return (
|
|
!user.email_confirmed_at &&
|
|
new Date(user.created_at) < fiveMinutesAgo
|
|
);
|
|
});
|
|
|
|
for (const user of targetUsers) {
|
|
await supabase.auth.admin.deleteUser(user.id);
|
|
}
|
|
|
|
return new Response(
|
|
JSON.stringify({
|
|
deleted: targetUsers.length,
|
|
}),
|
|
{ headers: { "Content-Type": "application/json" } },
|
|
);
|
|
});
|