Supabaseの開発をする際にSupabase CLIを用いることでとても簡単にローカルでの開発が可能になります。
また、supabaseフォルダ直下にseed.sql
を作成しておけばローカル環境を立ち上げた際にマイグレーションから初期データの投入までセットで行ってくれます。
アプリケーションで認証機能を用いている場合、Authenticationの初期データも投入したいはずです。
簡易的な記事になってしまいますが、以下のクエリをsupabase/seed.sql
の冒頭に記載することでメール認証のユーザーのテストデータを作成することができます。
seed.sql
WITH credentials(id, mail, pass) AS (
-- 5人のユーザーのUUID、メールアドレス、パスワードをここに記載します。
SELECT * FROM (VALUES
('123e4567-e89b-12d3-a456-426614174000', 'user1@example.com', 'password1'),
('123e4567-e89b-12d3-a456-426614174001', 'user2@example.com', 'password2'),
('123e4567-e89b-12d3-a456-426614174002', 'user3@example.com', 'password3'),
('123e4567-e89b-12d3-a456-426614174003', 'user4@example.com', 'password4'),
('123e4567-e89b-12d3-a456-426614174004', 'user5@example.com', 'password5')
) AS users(id, mail, pass)
),
create_user AS (
INSERT INTO auth.users (id, instance_id, ROLE, aud, email, raw_app_meta_data, raw_user_meta_data, is_super_admin, encrypted_password, created_at, updated_at, last_sign_in_at, email_confirmed_at, confirmation_sent_at, confirmation_token, recovery_token, email_change_token_new, email_change)
SELECT id::uuid, '00000000-0000-0000-0000-000000000000', 'authenticated', 'authenticated', mail, '{"provider":"email","providers":["email"]}', '{}', FALSE, crypt(pass, gen_salt('bf')), NOW(), NOW(), NOW(), NOW(), NOW(), '', '', '', '' FROM credentials
RETURNING id
)
INSERT INTO auth.identities (id, provider_id, user_id, identity_data, provider, last_sign_in_at, created_at, updated_at)
SELECT gen_random_uuid(), id, id, json_build_object('sub', id), 'email', NOW(), NOW(), NOW() FROM create_user;
諸々カスタムしたい場合は、こちらの箇所を修正してください。
WITH credentials(id, mail, pass) AS (
-- 5人のユーザーのUUID、メールアドレス、パスワードをここに記載します。
SELECT * FROM (VALUES
('123e4567-e89b-12d3-a456-426614174000', 'user1@example.com', 'password1'),
('123e4567-e89b-12d3-a456-426614174001', 'user2@example.com', 'password2'),
('123e4567-e89b-12d3-a456-426614174002', 'user3@example.com', 'password3'),
('123e4567-e89b-12d3-a456-426614174003', 'user4@example.com', 'password4'),
('123e4567-e89b-12d3-a456-426614174004', 'user5@example.com', 'password5')
) AS users(id, mail, pass)
),
左から、UUID型、TEXT型、TEXT型のデータを投入してください。
UUID型はuser-id-1234
のようになんでもいいわけではなく、postgreSQLに準拠した形式で指定してください。
面倒であれば11111111-1111-1111-1111-111111111111
のようにしてもいいですが、検索をするとUUID生成ツールのようなものもあるのでそちらを用いても良いかと思います。
(筆者はChatGPTに作ってもらいました)
あとはusersテーブルのidなどに上記で指定したUUIDをセットしてseederデータの作成を進めてください。