Functions
#
Main interfaceinterface RecipeInterface {
/* * Called when the user submits a new password after clicking on the * password reset link. This function should call an API that verifies * the token and saves the new password. * * @params: formFields contains the password entered by the user * token is the password reset token * config is the config provided by the user when calling the init function of this recipe * * @returns: "OK" on success, * "RESET_PASSWORD_INVALID_TOKEN_ERROR" in case of an invalid token * "FIELD_ERROR" in case of an invalid password format. */ submitNewPassword: (input: { formFields: { id: string; value: string; }[]; token: string; config: EPConfig; }) => Promise< | { status: "OK" | "RESET_PASSWORD_INVALID_TOKEN_ERROR"; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; } >;
/* * Called when the user clicks on the send password email button. This function * should call an API that generates and sends a password reset email * * @params: formFields contains the email entered by the user * config is the config provided by the user when calling the init function of this recipe * * @returns: "OK" on success, * "FIELD_ERROR" in case of an invalid email format. */ sendPasswordResetEmail: (input: { formFields: { id: string; value: string; }[]; config: EPConfig; }) => Promise< | { status: "OK"; } | { status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; } >;
/* * Called during sign up to check if the entered email exists already or not * * @params: email is the value entered by the user in the sign up form * config is the config provided by the user when calling the init function of this recipe * * @returns: true if the email already exists, else false. */ doesEmailExist: (input: { email: string; config: EPConfig }) => Promise<boolean>;
/* * Called when a user clicks on a third party provider. It should return the URL where * the user is to be navigated to for authentication (on the third party site). * * @params: thirdPartyId is ID of the third party provider as seen by SuperTokens. * For example, got sign in with google, the ID is "google". * config is the config provided by the user when calling the init function of this recipe * * @returns: the URL where the user is to be redirected to for authentication. */ getOAuthAuthorisationURL: (input: { thirdPartyId: string; config: TPConfig }) => Promise<string>;
/* * Called when then user clicks the login / sign up button for emailpassword auth. * Also called when the user is redirected back to the app post auth from third party * providers. * * @params: If the user has used email password sign in, it contains the email, * password and other form fields. Else it contains the auth code provided * by the third party social login. See the type definition below * * @returns: See the type definition below */ signInAndUp: (input: SignInAndUpInput) => Promise<SignInAndUpOutput>;
/* * Called when the user clicks a social provider option. It is supposed save * the state and redirect the user to the third party provider's site. * * @params: thirdPartyId is ID of the third party provider as seen by SuperTokens. * For example, got sign in with google, the ID is "google". * config is the config provided by the user when calling the init function of this recipe * state is the OAuth state that can be retrieved after a successful auth * from the third party provider's site. * * @returns: See the type definition below */ redirectToThirdPartyLogin: (input: { thirdPartyId: string; config: TPConfig; state?: StateObject; }) => Promise<{ status: "OK" | "ERROR" }>;}
#
Supporting Typestype SignInAndUpInput = | { type: "emailpassword"; isSignIn: boolean; formFields: { id: string; value: string; }[]; config: EPConfig; } | { type: "thirdparty"; thirdPartyId: string; config: TPConfig; };
type SignInAndUpOutput = | { type: "emailpassword" | "thirdparty"; status: "OK"; user: User; createdNewUser: boolean; } | { type: "emailpassword"; status: "FIELD_ERROR"; formFields: { id: string; error: string; }[]; } | { type: "emailpassword"; status: "WRONG_CREDENTIALS_ERROR"; } | { type: "thirdparty"; status: "NO_EMAIL_GIVEN_BY_PROVIDER" | "GENERAL_ERROR"; } | { type: "thirdparty"; status: "FIELD_ERROR"; error: string; };
type StateObject = { state?: string; rid?: string; thirdPartyId?: string; redirectToPath?: string;};