export const metadata = { title: `User Creation Flows`, } # {metadata.title} This document provides flows to create a user. ## Invite Users Another possible flow to create a user is by sending them an invite. Then, once they accept it, you create a new user for them: ```ts // create invite const invite = await userModuleService.createInvites({ email: "user@example.com", }) // later, accept invite and create user const invite = await userModuleService.validateInviteToken("secret123") await userModuleService.updateInvites({ id: invite.id, accepted: true, }) const user = await userModuleService.createUsers({ email: invite.email, }) ``` ### Invite Expiry An invite has an expiry date. You can renew the expiry date and refresh the token using the `refreshInviteTokens` method: ```ts await userModuleService.refreshInviteTokens(["invite_123"]) ``` --- ## Straightforward Creation Finally, you can create a user using the [create method of the User Module’s main service](/references/user/create): ```ts const user = await userModuleService.createUsers({ email: "user@example.com", }) ``` ### With the Auth Module 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: ```ts const { success, authIdentity } = await authModuleService.authenticate("emailpass", { // ... }) // assuming authIdentity is defined const [, count] = await userModuleService.listAndCountUsers({ email: authIdentity.entity_id, }) if (!count) { const user = await userModuleService.createUsers({ email: authIdentity.entity_id, }) } ```