Skip to content

Instantly share code, notes, and snippets.

@khattaksd
Created September 22, 2023 00:19
Show Gist options
  • Save khattaksd/4e8f4c89f4e928a2ecaad56d4a17ecd1 to your computer and use it in GitHub Desktop.
Save khattaksd/4e8f4c89f4e928a2ecaad56d4a17ecd1 to your computer and use it in GitHub Desktop.
Supabase Seed Users for local development & testing
-- supabase/seed.sql
--
-- create test users
INSERT INTO
auth.users (
instance_id,
id,
aud,
role,
email,
encrypted_password,
email_confirmed_at,
recovery_sent_at,
last_sign_in_at,
raw_app_meta_data,
raw_user_meta_data,
created_at,
updated_at,
confirmation_token,
email_change,
email_change_token_new,
recovery_token
) (
select
'00000000-0000-0000-0000-000000000000',
uuid_generate_v4 (),
'authenticated',
'authenticated',
'user' || (ROW_NUMBER() OVER ()) || '@example.com',
crypt ('password123', gen_salt ('bf')),
current_timestamp,
current_timestamp,
current_timestamp,
'{"provider":"email","providers":["email"]}',
'{}',
current_timestamp,
current_timestamp,
'',
'',
'',
''
FROM
generate_series(1, 10)
);
-- test user email identities
INSERT INTO
auth.identities (
id,
user_id,
identity_data,
provider,
last_sign_in_at,
created_at,
updated_at
) (
select
uuid_generate_v4 (),
id,
format('{"sub":"%s","email":"%s"}', id::text, email)::jsonb,
'email',
current_timestamp,
current_timestamp,
current_timestamp
from
auth.users
);
@andostronaut
Copy link

Thanks @gabrielrolfsen , i will try it

@GitTom
Copy link

GitTom commented Oct 16, 2024

I created a variation on the above ...

Supabase Import Auth Users

https://gist.github.com/GitTom/27863f4b8811406d08fc76b3b1537848
Load new users from an import table into auth.users and auth.identities.

The main idea is to be usable for seeding a new database, but also for adding new users to existing data. It loads data from an import table, and saves any generated values (eg. the UUID for new users) back into the import table so you can use these in other test data and count on them remaining the same across resets.

(Note that to preserve the new user's uuid's across db resets you actually have to manually grab them from the import.users table and add them to the little INSERT script before each reset - I haven't automated that.)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment