skip to content
barorin&?

SupabaseでユーザーのEmailを変更する方法

/ 2 min read

はじめに

Email の Secure email change がオンになっていると、旧メールアドレスと 新メールアドレスに届くそれぞれの確認メールのリンクをクリックしないと変更 されないんですね…。

それに気付かず、なんで変更されないのかずっと悩んでました。
ちなみに、片方だけクリックした時点では新メールアドレスは auth.users の email_change に格納され、どちらもクリックした時点で email_change が EMPTY になり、email に格納されます。

方法

それでは、SupabaseでユーザーのEmailを変更する方法です。

// lib/supabaseClient
import { createClient } from "@supabase/supabase-js";
import type { Database } from "../../supabase/schema";

// `Database`型の作成方法は参考ページを参照
export const supabase = createClient<Database>(
  process.env.NEXT_PUBLIC_SUPABASE_URL as string,
  process.env.NEXT_PUBLIC_SUPABASE_ANON_KEY as string,
);
import { supabase } from '@/lib/supabaseClient'

async function updateEmail(email: string) {
    const { error } = await supabase.auth.updateUser({ email: email })
    if (error) { throw error }
}

参考

Supabaseで作ったDBのTypeScript用型設定を自動生成する方法