diff --git a/docs/content/2.composables/1.useDirectusAuth.md b/docs/content/2.composables/1.useDirectusAuth.md index 3042f8b2..4f291333 100644 --- a/docs/content/2.composables/1.useDirectusAuth.md +++ b/docs/content/2.composables/1.useDirectusAuth.md @@ -102,6 +102,48 @@ const onSubmit = async () => { ``` +### `inviteUser` + +Invite a user to join Directus. **Email and role are required**. Email is sent by directus server to `email` with a link to directus server or `invite_url` containing invite token. + +- **Arguments:** + - data: [`DirectusInviteCreation`](https://github.com/Intevel/nuxt-directus/blob/main/src/runtime/types/index.d.ts#L239) +- **Returns:** `Promise` + +```vue + +``` + +### `acceptInvite` + +Accepts an invitation created via `inviteUser`. **Token and password are required**. Token is provided as a query param in the invite_url. + +- **Arguments:** + - data: [`DirectusAcceptInvite`](https://github.com/Intevel/nuxt-directus/blob/main/src/runtime/types/index.d.ts#L244) +- **Returns:** `Promise` + +```vue + +``` + ## Middleware example > Check how to Redirect user to login page [over here](/examples/redirectuserlogin). diff --git a/docs/content/4.Types/8.DirectusInvite.md b/docs/content/4.Types/8.DirectusInvite.md new file mode 100644 index 00000000..841d9427 --- /dev/null +++ b/docs/content/4.Types/8.DirectusInvite.md @@ -0,0 +1,16 @@ +# DirectusInvite + +Types related to Directus user invite procedure. + +```ts +export interface DirectusInviteCreation { + email: string; + role: string; + invite_url?: string +}; + +export interface DirectusInviteAccept { + token: string; + password: string +}; +``` diff --git a/src/runtime/composables/useDirectusAuth.ts b/src/runtime/composables/useDirectusAuth.ts index 9d7f454a..ab133c70 100644 --- a/src/runtime/composables/useDirectusAuth.ts +++ b/src/runtime/composables/useDirectusAuth.ts @@ -1,17 +1,20 @@ -import type { Ref } from 'vue' -import { useRuntimeConfig, useRoute } from '#app' import type { - DirectusAuthResponse, DirectusAuthCredentials, - DirectusUser, + DirectusAuthResponse, + DirectusAcceptInvite, + DirectusInviteCreation, DirectusPasswordForgotCredentials, DirectusPasswordResetCredentials, - DirectusRegisterCredentials + DirectusRegisterCredentials, + DirectusUser } from '../types' +import { useRoute, useRuntimeConfig } from '#app' + +import type { Ref } from 'vue' import { useDirectus } from './useDirectus' -import { useDirectusUser } from './useDirectusUser' import { useDirectusToken } from './useDirectusToken' import { useDirectusUrl } from './useDirectusUrl' +import { useDirectusUser } from './useDirectusUser' export const useDirectusAuth = () => { const config = useRuntimeConfig() @@ -122,6 +125,24 @@ export const useDirectusAuth = () => { return createUser(data) } + const inviteUser = async ( + data: DirectusInviteCreation + ): Promise => { + return await directus('/users/invite', { + method: 'POST', + body: data + }) + } + + const acceptInvite = async( + data: DirectusAcceptInvite + ): Promise => { + return await directus('/users/invite/accept', { + method: 'POST', + body: data + }) + } + const requestPasswordReset = async ( data: DirectusPasswordForgotCredentials, useStaticToken?: boolean @@ -163,6 +184,8 @@ export const useDirectusAuth = () => { logout, createUser, register, + inviteUser, + inviteAccept, loginWithProvider } } diff --git a/src/runtime/types/index.d.ts b/src/runtime/types/index.d.ts index 2eb7acf9..3997dc49 100644 --- a/src/runtime/types/index.d.ts +++ b/src/runtime/types/index.d.ts @@ -234,4 +234,15 @@ export interface DirectusItems { export interface DirectusItem { data: NonNullable; -}; \ No newline at end of file +}; + +export interface DirectusInviteCreation { + email: string; + role: string; + invite_url?: string +}; + +export interface DirectusAcceptInvite { + token: string; + password: string +};