Laravel Invite Only
Laravel Invite Only stats
- Downloads
- 373
- Stars
- 3
- Open Issues
- 0
- Forks
- 0
A Laravel package for managing user invitations with polymorphic relationships, token-based access, scheduled reminders, and event-driven notifications.
Laravel Invite Only
A Laravel package for managing user invitations with polymorphic relationships, token-based access, scheduled reminders, and event-driven notifications.
Features
- Polymorphic invitations - Invite users to any model (teams, organizations, projects)
- Bulk invitations - Invite multiple users at once with partial failure handling
- Token-based secure links - Shareable invitation URLs with secure tokens
- Status tracking - Pending, accepted, declined, expired, and cancelled states
- Automatic reminders - Scheduled reminder emails for pending invitations
- Event-driven - Events fired for all invitation lifecycle changes
- Structured exceptions - Error codes and resolution hints for easy debugging
Requirements
- PHP 8.2+
- Laravel 11.0 or 12.0
Installation
composer require offload-project/laravel-invite-only php artisan vendor:publish --tag="invite-only-config"php artisan vendor:publish --tag="invite-only-migrations"php artisan migrate
Quick Start
1. Add Traits
// Team.php (or any model that can have invitations)use OffloadProject\InviteOnly\Traits\HasInvitations; class Team extends Model{ use HasInvitations;}
// User.phpuse OffloadProject\InviteOnly\Traits\CanBeInvited; class User extends Authenticatable{ use CanBeInvited;}
2. Send Invitations
// Single invitation$team->invite('user@example.com', [ 'role' => 'member', 'invited_by' => auth()->user(),]); // Bulk invitations$result = $team->inviteMany( ['one@example.com', 'two@example.com', 'three@example.com'], ['role' => 'member', 'invited_by' => auth()->user()]); $result->successful; // Collection of created invitations$result->failed; // Collection of failures with reasons
3. Handle Acceptance
use OffloadProject\InviteOnly\Events\InvitationAccepted; Event::listen(InvitationAccepted::class, function ($event) { $team = $event->invitation->invitable; $user = $event->user; $role = $event->invitation->role; $team->users()->attach($user->id, ['role' => $role]);});
4. Schedule Reminders (Optional)
// routes/console.phpSchedule::command('invite-only:send-reminders --mark-expired')->daily();
Documentation
- Getting Started - Step-by-step tutorial
- API Reference - All methods, events, and configuration
- Concepts - Lifecycle, architecture, and design decisions
How-To Guides
Testing
composer test
License
MIT License. See LICENSE for details.
We apply cognitive psychology to build custom software that reduces mental overhead. Less friction. More flow. Systems designed for how people actually think.