Open3

Supabaseでユーザーを削除する

t0m0120t0m0120

注意点

  • この関数はサーバー上で行う必要がある。
    • next.jsなら/apiに生やすと楽。
  • service_role_keyが必要。
    • フロントで使ったanon_keyとは違い、別途サーバーサイド用にcreateClientが必要になる。
export const supabase = createClient(
  SUPABASE_URL,
  SERVICE_ROLE_KEY // ここ
);
t0m0120t0m0120

下記を叩くが、エラーが発生する。

const { data: user, error } = await supabase.auth.api.deleteUser(
  user_id
)

{"message":"Database error deleting user","status":500}

https://github.com/supabase/supabase/issues/1948

試しにsupabaseのWebから削除すると、下記のようなusersとprofilesのidによる外部キー制約で怒られている。

Failed to delete user: 
update or delete on table "users" violates foreign key
constraint "profiles_id_fkey" on table "profiles"

postgrasqlcascale

https://github.com/supabase/supabase/discussions/3284#discussioncomment-1368231

profilesテーブル の idを on delete cascade で作り直す。

create table profiles (
  id uuid references auth.users on delete cascade not null ,
  ...
)