Skip to main content

Post signin / signup callbacks

1) On the frontend#

This method allows you to fire events immediately after a successful sign in / up. For example to send analytics events post sign in / up.

SuperTokens.init({    appInfo: {...},    recipeList: [        ThirdPartyEmailPassword.init({            onHandleEvent: async (context) => {                if (context.action === "SESSION_ALREADY_EXISTS") {                    // TODO:                } else {                    let {id, email} = context.user;                    if (context.action === "SUCCESS") {                        if (context.isNewUser) {                            // TODO: Sign up                        } else {                            // TODO: Sign in                        }                    }                }            }        }),        Session.init()    ]});
info

Please refer to this page to learn more about the onHandleEvent hook.

2) On the backend#

For this, you'll have to override the following APIs in the init function call, on the backend:

  • emailPasswordSignUpPOST: Sign up with email & password
  • emailPasswordSignInPOST: Sign in with email & password
  • thirdPartySignInUpPOST: Sign in or up with third party
SuperTokens.init({    appInfo: {...},    supertokens: {...},    recipeList: [        ThirdPartyEmailPassword.init({            override: {                apis: (originalImplementation) => {                    return {                        ...originalImplementation,
                        // override the email password sign up API                        emailPasswordSignUpPOST: async function(input) {                            if (originalImplementation.emailPasswordSignUpPOST === undefined) {                                throw Error("Should never come here");                            }
                            // TODO: some pre sign up logic
                            let response = await originalImplementation.emailPasswordSignUpPOST(input);
                            if (response.status === "OK") {                                // TODO: some post sign up logic                            }
                            return response;                        },
                        // override the email password sign in API                        emailPasswordSignInPOST: async function(input) {                            if (originalImplementation.emailPasswordSignInPOST === undefined) {                                throw Error("Should never come here");                            }
                            // TODO: some pre sign in logic
                            let response = await originalImplementation.emailPasswordSignInPOST(input);
                            if (response.status === "OK") {                                // TODO: some post sign in logic                            }
                            return response;                        },
                        // override the thirdparty sign in / up API                        thirdPartySignInUpPOST: async function(input) {                            if (originalImplementation.thirdPartySignInUpPOST === undefined) {                                throw Error("Should never come here");                            }
                            // TODO: Some pre sign in / up logic
                            let response = await originalImplementation.thirdPartySignInUpPOST(input);
                            if (response.status === "OK") {                                if (response.createdNewUser) {                                    // TODO: some post sign up logic                                } else {                                    // TODO: some post sign in logic                                }                            }
                            return response;                        }                    }                }            }        }),        Session.init({...})    ]});