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

Unable to pass shouldCreateUser: false when using generateLink

Open chrisb2244 opened this issue 3 years ago • 7 comments

Feature request

Is your feature request related to a problem? Please describe.

If I use the auth.signIn(...) function, I can prevent the creation of new users by passing shouldCreateUser: false. It doesn't appear to be possible to do the same if instead I want to use auth.api.generateLink('magiclink', email, redirectTo).

Describe the solution you'd like

Addition of a parameter (probably in the options) for generateLink to allow the prevention of new user creation.

Describe alternatives you've considered

I can use the auth.signIn({email}, { shouldCreateUser: false, redirectTo, ...options }) function, but then I can't generate the email formatting as I might prefer. Perhaps it's possible to workaround by first checking the existence of a user, and then rejecting before calling generateLink, but it would be nice to have the magiclink able to receive the same options as the signIn function.

chrisb2244 avatar May 26 '22 16:05 chrisb2244

@supabase/auth-team Assigning this to the PIC of the Auth team to take care of this.

monicakh avatar Jul 13 '22 14:07 monicakh

I'm confused that the related PR was closed. I'll take it up I guess.

activenode avatar Oct 31 '23 13:10 activenode

FYI for those who need a workaround:

  1. The easiest option without having to create an RPC is to delete the user after creation immediately.
  2. OR create an RPC like here https://github.com/orgs/supabase/discussions/1282#discussioncomment-1674133
const { data } =  supabase.auth.admin.generateLink(...);

if (data.properties) {
  const user = data.user;
  const { hashed_token, verification_type } = data.properties;

  if (verification_type === 'signup') {
   await supabase.auth.admin.deleteUser(user.id);
   return; // dont do anything else
  }
}

activenode avatar Oct 31 '23 15:10 activenode