Пакет Laravel Invite Only керує запрошеннями користувачів у Laravel-додатках. Автор — Shavonn Brown. Пакет реалізує запрошення на основі токенів із поліморфними зв’язками, автоматичними нагадуваннями та подієвими сповіщеннями.
Підходить для додатків, яким потрібне керування запрошеннями зі стеженням статусу та подальшими діями. Типові випадки: інструменти командної роботи, SaaS з організаційними членствами, платформи співпраці над проєктами, системи подій з RSVP та освітні платформи. Поліморфний дизайн дозволяє одному механізму обробляти запрошення для команд, проєктів, організацій чи будь-якої іншої моделі.
Laravel Invite Only пропонує інструменти для керування запрошеннями:
Потрібні PHP 8.2+ та Laravel 11.0 або 12.0. Встановіть пакет через Composer:
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
Додайте необхідні трейти HasInvitations та CanBeInvited до своїх моделей:
use OffloadProject\InviteOnly\Traits\HasInvitations;
class Event extends Model
{
use HasInvitations;
}
use OffloadProject\InviteOnly\Traits\CanBeInvited;
class User extends Authenticatable
{
use CanBeInvited;
}
Підтримуються одиничні та масові запрошення. Для одиночного:
$event->invite('user@example.com', [
'role' => 'vip',
'invited_by' => auth()->user(),
]);
Масові запрошення з обробкою часткових помилок:
$result = $event->inviteMany(
['eric@example.com', 'paul@example.com', 'harris@example.com'],
['role' => 'vip', 'invited_by' => auth()->user()]
);
// Access successful invitations
$result->successful;
// Check failed invitations with reasons
$result->failed;
Пакет генерує події на кожному етапі життєвого циклу запрошення. Слухайте подію InvitationAccepted, щоб виконати дії після прийняття:
use OffloadProject\InviteOnly\Events\InvitationAccepted;
Event::listen(InvitationAccepted::class, function ($event) {
$conferenceEvent = $event->invitation->invitable;
$user = $event->user;
$role = $event->invitation->role;
$conferenceEvent->attendees()->attach($user->id, ['role' => $role]);
});
Інші події: InvitationCreated, InvitationDeclined, InvitationCancelled та InvitationExpired.
Налаштуйте автоматичні нагадування для відправки follow‑up листів щодо очікуваних запрошень. У конфігурації вказують, на які дні відправляти нагадування:
'reminders' => [
'after_days' => [3, 5], // Send reminders on day 3 and day 5
'max_reminders' => 2,
],
Заплануйте команду у routes/console.php:
use Illuminate\Support\Facades\Schedule;
Schedule::command('invite-only:send-reminders --mark-expired')->daily();
Система відстежує лічильник нагадувань, щоб уникати дублювання, навіть якщо планувальник пропустив день. Запрошення можна налаштувати на автоматичне завершення через вказану кількість днів (за замовчуванням 7), а команда з прапорцем --mark-expired позначить прострочені запрошення.
Сильна сторона пакета — поліморфний дизайн. Можна прив’язувати запрошення до будь‑якої моделі:
// Conference event invitations
$conferenceEvent->invite('speaker@example.com');
// Workshop invitations
$workshop->invite('attendee@example.com');
// Meetup invitations
$meetup->invite('participant@example.com');
Це зручно для додатків із різними типами сутностей, яким потрібна система запрошень.
Зберігайте додаткову інформацію в колонці metadata:
$event->invite('speaker@example.com', [
'metadata' => [
'session_topic' => 'Laravel AI SDK',
'time_slot' => '2:00 PM',
'dietary_restrictions' => 'vegetarian',
],
]);
// Retrieve metadata later
$invitation->metadata['session_topic']; // 'Laravel Performance'
Це дозволяє додавати довільні дані без зміни схеми БД.
Пакет повертає структуровані виключення з машинозчитуваними кодами помилок:
try {
InviteOnly::accept($token);
} catch (InvitationException $e) {
// Human-readable message
$e->getMessage(); // "This invitation has expired."
// Suggested resolution
$e->resolution; // "Create a new invitation..."
// Machine-readable code
$e->errorCode; // "INVITATION_EXPIRED"
}
Це полегшує побудову API та надання зрозумілих повідомлень користувачам.
Щоб дізнатися більше й переглянути код, відвідайте репозиторій на GitHub.
Laravel Livewire випустив нову версію 3.6, яка приносить з собою цікаві HTML-директиви для управління видимістю DOM-елементів і JavaScript-діями. Досліджуйте нові можливості Livewire, що допоможуть вам створити ще більш інтерактивні користувацькі інтерфейси!
У сучасній веб-розробці аутентифікація є ключовою для захисту додатків і даних користувачів. Дізнайтеся, як модуль nuxt-sanctum-authentication спростить інтеграцію між Nuxt 3 та Laravel Sanctum, забезпечуючи надійний і зручний спосіб реалізації аутентифікації для вашого проєкту
Laravel пропонує потужні можливості повнотекстового пошуку за допомогою методів whereFullText та orWhereFullText, що дозволяють здійснювати складні запити до бази даних. Дізнайтеся, як реалізувати ефективний пошук для вашого блогу чи системи управління контентом