Skip to main content

Frontend Functions Override

Use the override config

What type of UI are you using?

import SuperTokens from "supertokens-auth-react";
import Session from "supertokens-auth-react/recipe/session";
import ThirdParty from "supertokens-auth-react/recipe/thirdparty";
import EmailPassword from "supertokens-auth-react/recipe/emailpassword";

SuperTokens.init({
appInfo: {
apiDomain: "...",
appName: "...",
websiteDomain: "..."
},
recipeList: [
Session.init({
override: {
functions: (originalImplementation) => {
return {
...originalImplementation,

// we will only be overriding the function for checking
// if a session exists
doesSessionExist: async function (input) {
// TODO: some custom logic

// or call the default behaviour as show below
return originalImplementation.doesSessionExist(input);
}
}
}
}
}),
EmailPassword.init({
override: {
functions: (originalImplementation) => {
return {
...originalImplementation,

// we will only be overriding what happens when a user
// clicks the sign up button.
signUp: async function (input) {
// TODO: some custom logic

// or call the default behaviour as show below
return originalImplementation.signUp(input);
},
// ...
// TODO: override more functions
}
}
}
}),
ThirdParty.init({
override: {
functions: (originalImplementation) => {
return {
...originalImplementation,

// we will only be overriding what happens when a user
// clicks the sign in or sign up button.
signInAndUp: async function (input) {
// TODO: some custom logic

// or call the default behaviour as show below
return originalImplementation.signInAndUp(input);
},
// ...
// TODO: override more functions
}
}
}
})
]
});
  • originalImplementation is an object that contains functions that have the original implementation for this recipe. They can be used in your functions as a way to use the SuperTokens' default behaviour.
  • In the above code snippet, we override the signInAndUp function of the ThirdParty recipe and signUp of the EmailPassword recipe. This means that when the user clicks the sign up button in the UI, your function will be called with the relevant input object.