supabase-js icon indicating copy to clipboard operation
supabase-js copied to clipboard

when calling updateUserById method to update email of user it updates it without user confirmation

Open andreineamtu opened this issue 1 year ago • 4 comments

I'm trying to implement "update email" functionality on my website using the supabase admin client

const supabaseAdmin = createClient(supabaseUrl, supabaseServiceRoleKey); const { data, error } = await supabaseAdmin.auth.admin.updateUserById(params.userId, { email: params.email, email_confirm: false }
);

The problem: is updating automatically the user's email in the auth table and is sending a confirmation email to the new email address so the user can confirm the change. Isn't this how the method should work? Or should I use another method?

andreineamtu avatar Nov 11 '24 13:11 andreineamtu

I am not sure I understand your question, but the upabase.auth.admin.updateUserById should just update the user by the given id. See: https://supabase.com/docs/reference/javascript/auth-admin-updateuserbyid

kl-thamm avatar Nov 27 '24 07:11 kl-thamm

@andreineamtu Look at this issue (https://github.com/supabase/supabase-js/issues/1278) and the repo linked. You're using the admin method which is just doing by "brute-force" if you want the user to confirm it you should use supabase.auth.updateUser, I think. But documentation is missing on that method.

supermar1010 avatar Dec 10 '24 11:12 supermar1010

The documentation around all of this is garbage. I have an open ticket with supabase and they have not responded beyond saying "it works for me"

The method you are using is a brute force updates as suggested above. However it only works once. When you try to change the email a second time it does not work as intended it looks for the original email and when its not found it wont let you make the change again. This completely breaks that user and I have had to ask users to completely recreate their accounts.

The documentation around updateUser is also terrible. It just says a confirmation link will be sent. I have not been able to figure out if this means the link is sent dirrectly to supabase or if we need to handle it in the same way we do for confirming an email with our own API route which handles the verification.

oldbettie avatar Jan 02 '25 01:01 oldbettie

I agree, it's bad! Still having this issue.

theramjad avatar Mar 04 '25 12:03 theramjad