Created
September 22, 2023 00:19
-
-
Save khattaksd/4e8f4c89f4e928a2ecaad56d4a17ecd1 to your computer and use it in GitHub Desktop.
Supabase Seed Users for local development & testing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- 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 | |
); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.)