Components
<AcceptInvitationCard>
The <AcceptInvitationCard>
component handles the organization invitation acceptance flow. It displays invitation details and allows users to accept or reject organization invitations.
Usage
This component is typically used on a dedicated invitation acceptance page:
import { AcceptInvitationCard } from '@daveyplate/better-auth-ui'
export function AcceptInvitationPage() {
return (
<AcceptInvitationCard />
)
}
Features
- Invitation Display: Shows organization details and assigned role
- Accept/Reject Actions: Allow users to accept or reject invitations
- Authentication Check: Automatically redirects to sign-in if not authenticated
- Expiration Handling: Validates invitation expiration
- Error Handling: Displays appropriate error messages
URL Parameters
The component expects an invitationId
in the URL query parameters:
/auth/accept-invitation?invitationId=inv_123456
Reference
Prop | Type | Default |
---|---|---|
localization? | Partial<Partial<{ INVALID_USERNAME_OR_PASSWORD: string; EMAIL_NOT_VERIFIED: string; UNEXPECTED_ERROR: string; USERNAME_IS_ALREADY_TAKEN: string; USERNAME_TOO_SHORT: string; USERNAME_TOO_LONG: string; ... 355 more ...; SLUG_DOES_NOT_MATCH: string; }>> | - |
classNames? | SettingsCardClassNames | - |
className? | string | - |
Examples
Basic Usage
// app/auth/accept-invitation/page.tsx
import { AcceptInvitationCard } from '@daveyplate/better-auth-ui'
export default function AcceptInvitationPage() {
return (
<div className="flex min-h-screen items-center justify-center">
<AcceptInvitationCard />
</div>
)
}
With Custom Class Names
<AcceptInvitationCard
classNames={{
base: "max-w-md",
header: "text-center",
button: "rounded-full"
}}
/>
With Custom Localization
<AcceptInvitationCard
localization={{
ACCEPT_INVITATION: "Join Team",
REJECT: "Decline",
ACCEPT: "Join"
}}
/>
Invitation Flow
- Email Sent: User receives invitation email with link
- Click Link: User clicks invitation link with ID
- Authentication: If not signed in, redirected to sign-in
- View Invitation: Component displays organization and role
- Accept/Reject: User chooses to accept or reject
- Join Organization: On accept, user joins organization
Displayed Information
The card shows:
- Organization name and logo
- Organization slug/URL
- Assigned role (Owner, Admin, Member, or custom)
- Accept and reject buttons
Error States
The component handles various error scenarios:
- Invalid Invitation: Invitation ID not found
- Expired Invitation: Past expiration date
- Already Processed: Invitation already accepted/rejected
- Authentication Required: User not signed in
Security
- Invitation IDs are secure random tokens
- Server-side validation of invitation status
- Expiration dates are enforced
- User authentication is required
Integration
Set up the invitation route in your auth configuration:
// Using AuthCard with ACCEPT_INVITATION view
<AuthCard view="ACCEPT_INVITATION" />
// Or direct component usage
<AcceptInvitationCard />
Best Practices
- Custom Domain: Use your app domain for invitation links
- Expiration Time: Set reasonable expiration (7-14 days)
- Email Template: Customize invitation email design
- Success Redirect: Configure post-acceptance redirect
- Error Pages: Handle invalid invitation gracefully