UNPKG

@earnaha/auth0-action-helper

Version:
165 lines (141 loc) 6.55 kB
# AHA auth0 action helper ## Create custom actions in auth0 1. login auth0 account 2. create a action: e.g. `actions` → `Flows` → `Login` → `Add Action` → `Build Custom` 3. initialize the action: ``` name = Post Login Trigger = Login / Post Login Runtime = Node 16 ``` 4. click `Create` ## Add dependencies 1. click the cube icon in the left side of codes 2. click `Add Dependency` ``` name = @earnaha/auth0-action-helper version = 1.0.21 or latest ``` 3. click `Create` ## Setup event secrets 1. click the key icon in the left side of codes 2. click `Add Secret`, input keys and values like below, and then click `Create` for each one. - ENV = local, dev, test, stage, alpha, beta, gamma, prod, ...etc. - SERVICE = any string to distinguish your sites or services. - DOMAIN = https://subdomain.yourdomain.com (backend url, https required) - ACCESS_KEY = the secret key to access your backend api, encode string more than 25 letters - ACCESS_SALT = the secret salt to access your backend api, a number more than 10 digits - AUTH0_DOMAIN = `Applications` → `Applications` → `Machine to Machine App` → `Settings` → `Basic Information` → `Domain` - AUTH0_CLIENT_ID = `Applications` → `Applications` → `Machine to Machine App` → `Settings` → `Basic Information` → `Client ID` - AUTH0_CLIENT_SECRET = `Applications` → `Applications` → `Machine to Machine App` → `Settings` → `Basic Information` → `Client Secret` - SENTRY_DSN = the sentry dns for logging, a sentry account is required. (https://sentry.io/) - SENTRY_TRACES_SAMPLE_RATE = the sentry trace setting. e.g. 0.1, 1.0, ...etc. - SENTRY_LOGGER_LEVEL = the sentry logger level setting. e,g, debug, info, ...etc. - LINK_ACCOUNT_TIME = YYYY-MM-DD, account created after this date, merge accounts if having the same email. ## Code in actions ### Post login make an API in your backend side with the route _/auth/v3/login_ to handle the signed in/up account data. ``` const AhaHelper = require('@earnaha/auth0-action-helper'); /** * Handler that will be called during the execution of a PostLogin flow. * * @param {Event} event - Details about the user and the context in which they are logging in. * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login. */ exports.onExecutePostLogin = async (event, api) => { try { console.log('onExecutePostLogin event=',JSON.stringify(event)); console.log('onExecutePostLogin api=',JSON.stringify(api)); const helper = new AhaHelper.PostLoginHelper(event.secrets); const res = await helper.exec(event, api); console.log('onExecutePostLogin res=',res); } catch (e) { const errMsg = e?.response?.data || e?.message || `${e}`; console.error('onExecutePostLogin error=', errMsg); throw e; } }; /** * Handler that will be invoked when this action is resuming after an external redirect. If your * onExecutePostLogin function does not perform a redirect, this function can be safely ignored. * * @param {Event} event - Details about the user and the context in which they are logging in. * @param {PostLoginAPI} api - Interface whose methods can be used to change the behavior of the login. */ // exports.onContinuePostLogin = async (event, api) => { // }; ``` ### Post change password make an API in your backend side with the route _/auth/v3/refer/invitation/accept_ to handle the invitation acceptance things after the invited account signs in/up. ``` const AhaHelper = require('@earnaha/auth0-action-helper'); /** * Handler that will be called during the execution of a PostChangePassword flow. * * @param {Event} event - Details about the user and the context in which the change password is happening. * @param {PostChangePasswordAPI} api - Methods and utilities to help change the behavior after a user changes their password. */ exports.onExecutePostChangePassword = async (event, api) => { try { console.log('onExecutePostChangePassword event=',JSON.stringify(event)); console.log('onExecutePostChangePassword api=',JSON.stringify(api)); const helper = new AhaHelper.PostChangePasswordHelper(event.secrets); const res = await helper.exec(event, api); console.log('onExecutePostChangePassword res=',JSON.stringify(res)); } catch (e) { const errMsg = e?.response?.data || e?.message || `${e}`; console.error('onExecutePostChangePassword error=', errMsg); throw e; } }; ``` ### Post user registration currently no further handling in the exec function. ``` const AhaHelper = require('@earnaha/auth0-action-helper'); /** * Handler that will be called during the execution of a PostUserRegistration flow. * * @param {Event} event - Details about the context and user that has registered. * @param {PostUserRegistrationAPI} api - Methods and utilities to help change the behavior after a signup. */ exports.onExecutePostUserRegistration = async (event, api) => { try { console.log('onExecutePostUserRegistration event=',JSON.stringify(event)); console.log('onExecutePostUserRegistration api=',JSON.stringify(api)); const helper = new AhaHelper.PostUserRegistrationHelper(event.secrets); const res = await helper.exec(event, api); console.log('onExecutePostUserRegistration res=',JSON.stringify(res)); } catch (e) { const errMsg = e?.response?.data || e?.message || `${e}`; console.error('onExecutePostUserRegistration error=', errMsg); throw e; } }; ``` ### Pre user registration currently no further handling in the exec function. ``` const AhaHelper = require('@earnaha/auth0-action-helper'); /** * Handler that will be called during the execution of a PreUserRegistration flow. * * @param {Event} event - Details about the context and user that is attempting to register. * @param {PreUserRegistrationAPI} api - Interface whose methods can be used to change the behavior of the signup. */ exports.onExecutePreUserRegistration = async (event, api) => { try { console.log('onExecutePreUserRegistration event=',JSON.stringify(event)); console.log('onExecutePreUserRegistration api=',JSON.stringify(api)); const helper = new AhaHelper.PreUserRegistrationHelper(event.secrets); const res = await helper.exec(event, api); console.log('onExecutePreUserRegistration res=',res); } catch (e) { const errMsg = e?.response?.data || e?.message || `${e}`; console.error('onExecutePreUserRegistration error=', errMsg); throw e; } }; ``` ## Deploy and test