Files
medusa-store/www/apps/resources/app/commerce-modules/user/user-creation-flows/page.mdx
Shahed Nasser e472aed00f docs: new + improved auth documentation pages (#7529)
* added and improved auth docs

* add prep to generates resources action

* add module options to sidebar

* fix broken link
2024-06-09 15:18:29 +02:00

76 lines
1.7 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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.create({
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 Modules main service](/references/user/create):
```ts
const user = await userModuleService.create({
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 doesnt exist:
```ts
const { success, authIdentity } =
await authModuleService.authenticate("emailpass", {
// ...
})
// assuming authIdentity is defined
const [, count] = await userModuleService.listAndCount({
email: authIdentity.entity_id,
})
if (!count) {
const user = await userModuleService.create({
email: authIdentity.entity_id,
})
}
```