www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx
export const metadata = {
title: User Creation Flows,
}
In this document, learn the different ways to create a user using the User Module.
<Note title="Looking for no-code docs?">Refer to this Medusa Admin User Guide to learn how to manage users using the dashboard.
</Note>To create a user, use the createUsers method of the User Module’s main service:
const user = await userModuleService.createUsers({
email: "[email protected]",
})
You can pair this with the Auth Module to allow the user to authenticate, as explained in a later section.
To create a user, you can create an invite for them using the createInvites method of the User Module's main service:
const invite = await userModuleService.createInvites({
email: "[email protected]",
})
Later, you can accept the invite and create a new user for them:
const invite =
await userModuleService.validateInviteToken("secret_123")
await userModuleService.updateInvites({
id: invite.id,
accepted: true,
})
const user = await userModuleService.createUsers({
email: invite.email,
})
An invite has an expiry date. You can renew the expiry date and refresh the token using the refreshInviteTokens method:
await userModuleService.refreshInviteTokens(["invite_123"])
By combining the User and Auth Modules, you can use the Auth Module for authenticating users, and the User Module to manage those users.
So, when a user is authenticated, and you receive the AuthIdentity object, you can use it to create a user if it doesn’t exist:
const { success, authIdentity } =
await authModuleService.authenticate("emailpass", {
// ...
})
const [, count] = await userModuleService.listAndCountUsers({
email: authIdentity.entity_id,
})
if (!count) {
const user = await userModuleService.createUsers({
email: authIdentity.entity_id,
})
}