Supabaseでユーザ作成する方法
DashBoardで手動作成する
AuthenticationのタブからAdd userボタンでユーザ追加することができます。
招待の方法として以下の2種類の方法が用意されています。
- Send invitation
- Create new user
それぞれ、後述のAPI「auth.admin.inviteUserByEmail」と「auth.admin.createUser」が裏では実行されていると思われます。
Send invitationの方法ではユーザ作成時点でパスワードの設定がされません。パスワードでのログインを前提とするアプリケーションの場合は、別途初期パスワード登録する仕組みの用意が必要です。
APIでユーザ作成する
supabase.auth.signUp
セルフサインアップ可能なアプリケーションなどで利用するAPIです。
「メールアドレスまたは電話番号」と「パスワード」が必須項目となります。
const { data, error } = await supabase.auth.signUp({
email: 'example@email.com',
password: 'example-password',
})
supabase.auth.admin.createUser
業務用アプリケーションなどで管理者がユーザを作成するような場合などで利用するAPIです。
ユーザ作成はされますが、招待メールなどの通知はされないため、別途作成したユーザに連携する仕組みが必要です。
const { data, error } = await supabase.auth.admin.createUser({
email: 'user@email.com',
password: 'password',
user_metadata: { name: 'Yoda' }
})
supabase.auth.admin.inviteUserByEmail
業務用アプリケーションなどで管理者がユーザを作成するような場合などで利用するAPIです。
ユーザ作成に成功すると登録したメールアドレス宛に招待メールが送信され、ユーザ作成されたことが通知されます。ただし、この時点ではパスワードの設定がされていないため、パスワードでのログインを前提とするアプリケーションの場合は、別途初期パスワード登録する仕組みを用意する必要があります。
const { data, error } = await supabase.auth.admin.inviteUserByEmail('email@example.com')
supabase.auth.admin.generateLink
指定したメールアドレス宛にメールリンクとワンタイムパスワードを生成するためのAPIです。
以下のtype指定することにより様々な用途のメールリンクを生成することができます。
- signup
- invite
- magiclink
- recovery
- email_change_current
- email_change_new
typeにsignup
、invite
、magiclink
を指定することでユーザ作成することができます。
const { data, error } = await supabase.auth.admin.generateLink({
type: 'signup',
email: 'email@example.com',
password: 'secret'
})
Seederで開発用DBに初期ユーザ登録をする
auth.usersテーブルとauth.identitiesテーブルにデータをInsertする。
実装はこちらで紹介されている方法が参考になります。
Discussion