User signup event in Auth0 Lock

auth0, authentication, javascript

Solution

The Auth0 Lock does not trigger a specific event for user signup.

You can however detect this on a custom rule and enrich the user profile with this metadata. There's a signup sample rule that illustrates this possibility

function (user, context, callback) {
    user.app_metadata = user.app_metadata || {};

    // short-circuit if the user signed up already
    if (user.app_metadata.signed_up) return callback(null, user, context);

    // execute first time login/signup logic here
    // ...

    // update application metadata so that signup logic is skipped on subsequent logins
    user.app_metadata.signed_up = true;
    auth0.users.updateAppMetadata(user.user_id, user.app_metadata)
        .then(function () {
            callback(null, user, context);
        })
        .catch(function (err) {
            callback(err);
        });
}

This uses `app_metadata` to store information associated to the user so that you can keep track for which users you already executed their additional first-time signup logic.

Have in mind that rules will execute on the server-side of the authentication pipeline, so if the logic you want to implement requires user interaction you could achieve something similar by doing these set of steps:

- Upon login to the application get the user profile

- If there's no flag set assume the user just signed up and do your custom logic

- After doing your custom logic update the user `app_metadata` to set a signup flag (you can do this on your server-side application logic through Auth0 Management API)

Problem

The `'authenticated'` event is emitted after a successful authentication. ``` lock.on('authenticated', function(authResult) { }); ``` But is there any way to detect when a new user signs up to your application or do I have to store the user in my database and check it each time a user authenticates?

Original source