# Invite User to Organization Component

PropelAuth's Invite User to Organization component allows you to customize the flow around a user inviting another user to their organization in your app.

## Invite User to Organization

- User Email
- User Role
  - Owner
  - Admin
  - Member

Invite User

---

## [Shadcn Installation](https://ui.propelauth.com/org-membership-components/invite-user#shadcn-installation)

Install this component from our [shadcn registry](https://ui.propelauth.com/getting-started/component-registry).

```bash
npx shadcn@latest add https://components.propelauth.com/r/invite-user-to-organization.json
```

---

# Reference APIs

These are the APIs that are used by the above component. You can use these APIs directly in your own code.

## [inviteUserToOrg](https://ui.propelauth.com/org-membership-components/invite-user#invite-user-to-org)

Sends an invitation to a user to join an organization.

## Arguments

- Name `org_id`  
  *Type*: string  
  *Description*: The ID of the org.
- Name `email`  
  *Type*: string  
  *Description*: The email of the user who is being invited.
- Name `role`  
  *Type*: string  
  *Description*: The role the user will have.
- Name `additional_roles`  
  *Type*: string[]  
  *Description*: If using [multiple roles per user](https://docs.propelauth.com/overview/authorization/managing-roles-permissions#multiple-roles-per-user), an array of additional roles for the user.

## Response Functions

The response object has a **handle** function that you can use to handle the response. These functions can be async, and you can return values from them.

- Name `success`  
  *Description*: Successful request.
- Name `noInvitePermission`  
  *Description*: The user does not have permission to invite other users to the organization.
- Name `orgNotFound`  
  *Description*: The org ID cannot be found.
- Name `orgsNotEnabled`  
  *Description*: Organizations are not enabled for the project.
- Name `userAlreadyInOrg`  
  *Description*: The email provided is already a member of the organization.
- Name `orgMaxUsersLimitExceeded`  
  *Description*: The org's user limit has already been met.
- Name `badRequest`  
  *Description*: Incorrect arguments given.
- Name `unauthorized`  
  *Description*: The user is not logged in.
- Name `unexpectedOrUnhandled`  
  *Description*: An unexpected error occurred.

### Request

```javascript
const { inviteUserToOrg } = useAuthFrontendApis()

const response = await inviteUserToOrg({
    org_id: '1189c444-8a2d-4c41-8b4b-ae43ce79a492',
    email: 'test@example.com',
    role: 'Admin',
    // if using multi-role support
    additional_roles: [
        "Member"
    ]
})
response.handle({
    success: () => {
        console.log('User invited')
    },
    badRequest(error) {
        for (const [field, fieldErrorMessage] of Object.entries(error.user_facing_errors)) {
            console.log('Error: "' + fieldErrorMessage + '" for field: "' + field + '"')
        }
    },
    noInvitePermission(error) {
        console.error('No invite permission', error)
    },
    orgNotFound(error) {
        console.error('Org not found', error)
    },
    orgsNotEnabled(error) {
        console.error('Org not enabled', error)
    },
    userAlreadyInOrg(error) {
        console.error('User already in org', error)
    },
    orgMaxUsersLimitExceeded(error) {
        console.error('Org max users limit exceeded', error)
    },
    unexpectedOrUnhandled(error) {
        console.error('Unexpected or unhandled error', error)
    },
})
```

### Successful Response

```
{}
```
