asantibanez/laravel-subscribable-notifications

v1.0.5 2024-04-29 14:38 UTC

This package is auto-updated.

Last update: 2024-08-29 15:23:11 UTC


README

Latest Version on Packagist Total Downloads GitHub Actions

此包允许您将应用程序用户订阅到应用程序通知,并分发它们而不必指定接收者。此包的主要目标是允许您为通知类创建“接收者列表”,并轻松地向用户发送通知。

动机

最近我一直在开发后台办公类应用,其中一组用户需要通过电子邮件通知系统中的特定事件或场景。这些用户在应用中硬编码,有时需要根据他们在公司的工作订阅或取消订阅某些电子邮件。由于他们的电子邮件是硬编码的,所以更新每个应用程序发送的邮件的“订阅者”列表很棘手。本着这个想法,我创建了此包,以允许配置用户所需接收的每个邮件。

安装

您可以通过composer安装此包

composer require asantibanez/laravel-subscribable-notifications

之后,使用php artisan vendor:publish命令导出configmigrations

一旦导出laravel-subscribable-notifications.php配置文件,请确保定义您的User模型和subscribable_notifications(更多内容请见下文)。只有您配置的通知才可用于订阅。

用法

使用Laravel通知系统,您通常通过Notification外观或通过实现Notifiable特质时的User模型notify()方法来分发通知。

Notification::send([$user1, $user2, $user3], new OrderShipped($order));

// or 
$notification = new OrderShipped($order);

$user1->notify($notification);
$user2->notify($notification);
$user3->notify($notification);

使用laravel-subscribable-notifications,您通过“分发”来发送通知。任何订阅了通知的用户都会收到。

OrderShipped::dispatch($order);

准备您的通知

通知必须实现SubscribableNotification接口,这需要实现以下方法:

  • dispatch
  • subscribers
  • subscribableNotificationType

对于这些,将DispatchesToSubscriber特质添加到您的通知中,这将涵盖dispatchsubscribers。最后,通过提供一个标识您的通知的字符串来实现subscribableNotificationType。此值将保存到数据库中以供用户订阅。

class SalesOrderApprovedNotification extends Notification implements SubscribableNotification
{
    use DispatchesToSubscribers;

    public static function subscribableNotificationType(): string
    {
        return 'sales-order.approved';
    }
    
    // notification implementation here
}

您还必须在laravel-subscribable-notifications配置中的subscribable_notifications数组中添加您的通知。在此处注册您的通知将允许包知道可以通过此接口分发的哪些通知。

订阅/取消订阅用户

底层,使用一个notification_subscriptions表来跟踪所有用户对您的通知的订阅。

使用NotificationSubscriptionManager外观,您可以使用subscribeunsubscribe方法分别订阅和取消订阅用户的通知。还有一个unsubscribeFromAll方法来从用户中删除所有订阅。

注意:您的User模型可以实现HasNotificationSubscriptions特质以获取辅助方法,以便知道每个用户已订阅了哪些订阅。

实用工具

该包注册了一个新的subscribable-notifications:manage命令,您可以在终端中运行它并交互式地与notification_subscriptions表。此命令允许您从在laravel-subscribable-notifications配置文件中定义的通知中列出/添加/删除用户。

测试

composer test

变更日志

有关最近更改的更多信息,请参阅CHANGELOG

贡献

请参阅CONTRIBUTING获取详细信息。

安全

如果您发现任何与安全相关的问题,请发送电子邮件至santibanez.andres@gmail.com,而不是使用问题跟踪器。

致谢

许可证

MIT许可证(MIT)。请参阅许可证文件以获取更多信息。