{"id":15159623,"url":"https://github.com/sashagm/notification","last_synced_at":"2026-01-28T20:39:21.725Z","repository":{"id":169123834,"uuid":"645031649","full_name":"sashagm/notification","owner":"sashagm","description":"Уведомления для Laravel +10.x","archived":false,"fork":false,"pushed_at":"2025-04-13T07:57:55.000Z","size":312,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-24T16:38:14.256Z","etag":null,"topics":["email","laravel","laravel-middleware","laravel-package","notification","php","phpunit","telegram"],"latest_commit_sha":null,"homepage":"","language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sashagm.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2023-05-24T19:14:37.000Z","updated_at":"2025-04-14T14:06:15.000Z","dependencies_parsed_at":"2024-05-11T22:31:58.266Z","dependency_job_id":"e9b571ad-bd41-4721-b21f-f3f719c9eb08","html_url":"https://github.com/sashagm/notification","commit_stats":null,"previous_names":["sashagm/notification"],"tags_count":20,"template":false,"template_full_name":null,"purl":"pkg:github/sashagm/notification","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fnotification","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fnotification/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fnotification/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fnotification/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sashagm","download_url":"https://codeload.github.com/sashagm/notification/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sashagm%2Fnotification/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28851089,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-28T15:15:36.453Z","status":"ssl_error","status_checked_at":"2026-01-28T15:15:13.020Z","response_time":57,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["email","laravel","laravel-middleware","laravel-package","notification","php","phpunit","telegram"],"created_at":"2024-09-26T21:40:56.025Z","updated_at":"2026-01-28T20:39:21.706Z","avatar_url":"https://github.com/sashagm.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cp align=\"center\"\u003e\u003ca href=\"https://laravel.com\" target=\"_blank\"\u003e\u003cimg src=\"https://raw.githubusercontent.com/laravel/art/master/logo-lockup/5%20SVG/2%20CMYK/1%20Full%20Color/laravel-logolockup-cmyk-red.svg\" width=\"400\" alt=\"Laravel Logo\"\u003e\u003c/a\u003e\u003c/p\u003e\r\n\r\n\u003cp align=\"center\"\u003e\r\n\r\n\u003ca href=\"https://packagist.org/packages/sashagm/notification\"\u003e\u003cimg src=\"https://img.shields.io/packagist/dt/sashagm/notification\" alt=\"Total Downloads\"\u003e\u003c/a\u003e\r\n\u003ca href=\"https://packagist.org/packages/sashagm/notification\"\u003e\u003cimg src=\"https://img.shields.io/packagist/v/sashagm/notification\" alt=\"Latest Stable Version\"\u003e\u003c/a\u003e\r\n\u003ca href=\"https://packagist.org/packages/sashagm/notification\"\u003e\u003cimg src=\"https://img.shields.io/packagist/l/sashagm/notification\" alt=\"License\"\u003e\u003c/a\u003e\r\n\u003ca href=\"https://packagist.org/packages/sashagm/notification\"\u003e\u003cimg src=\"https://img.shields.io/github/languages/code-size/sashagm/notification\" alt=\"Code size\"\u003e\u003c/a\u003e\r\n\u003ca href=\"https://packagist.org/packages/sashagm/notification\"\u003e\u003cimg src=\"https://img.shields.io/packagist/stars/sashagm/notification\" alt=\"Code size\"\u003e\u003c/a\u003e\r\n\r\n[![PHP Version](https://img.shields.io/badge/PHP-%2B8-blue)](https://www.php.net/)\r\n[![Laravel Version](https://img.shields.io/badge/Laravel-%2B10-red)](https://laravel.com/)\r\n\r\n\u003c/p\u003e\r\n\r\n## Уведомления для Laravel\r\nNotificationService - это компонент фреймворка Laravel, который позволяет уведомлять пользователей о различных событиях в приложении. Он предоставляет возможность отправки уведомлений на электронную почту или в Telegram-чаты.\r\n\r\nДля использования NotificationService необходимо настроить переменные окружения для SMTP-сервера и токена бота Telegram. После этого можно создать уведомления, которые будут отправляться при наступлении определенных событий в приложении.\r\n\r\nУведомления могут быть созданы как классы, которые реализуют интерфейс Illuminate\\Contracts\\Notifications\\ShouldQueue, так и анонимные функции. В уведомлениях можно задавать текст сообщения, тему, получателей и другие параметры.\r\n\r\nNotificationService также предоставляет возможность использовать различные каналы для отправки уведомлений, например, SMS или Push-уведомления. Для этого необходимо настроить соответствующие каналы и добавить их в конфигурацию NotificationService.\r\n\r\nВ целом, NotificationService предоставляет удобный и гибкий способ уведомления пользователей о событиях в приложении, что может значительно повысить его удобство и функциональность.\r\n\r\nNotificationService – это открытое программное обеспечение, распространяемое под лицензией MIT. Это означает, что вы можете использовать и модифицировать его свободно, без ограничений. \r\n\r\nМы верим, что свобода и открытость являются ключевыми принципами разработки программного обеспечения, и поэтому мы выбрали лицензию MIT для NotificationService. Это дает пользователям и разработчикам полную свободу использовать, изменять и распространять наш продукт.\r\n\r\nМы надеемся, что NotificationService будет полезным для вас и вашей команды, и мы приглашаем вас внести свой вклад в его развитие. Если у вас есть какие-либо вопросы или предложения, пожалуйста, свяжитесь с нами – мы всегда рады помочь.\r\n\r\n### Оглавление:\r\n\r\n- [Требования](#требования)\r\n- [Установка](#установка)\r\n- [Использование](#использование)\r\n  - [Права доступа](#права-доступа)\r\n  - [Кастомный гард](#кастомный-гард)\r\n  - [Кастомный логер](#кастомный-логер)   \r\n- [Дополнительные возможности](#дополнительные-возможности)\r\n- [Тестирование](#тестирование)\r\n- [Лицензия](#лицензия)\r\n\r\n#### Требования\r\n\r\nОсновные требования для установки и корректной работы:\r\n\r\n- `PHP` \u003e= 8.0\r\n- `Laravel` \u003e= 10.x\r\n- `Composer` \u003e= 2.4.x\r\n\r\n#### Установка\r\n\r\nДля установки пакета необходимо выполнить команды:\r\n\r\n- composer require sashagm/notification\r\n- php artisan notification:install\r\n\r\n\r\n#### Использование\r\n\r\n1. Для начала давайте определим нашу вспомогательную конфигурацию в `.env`:\r\n\r\n```php\r\nNF_EMAIL= \r\nTELEGRAM_API_KEY = \r\nTELEGRAM_CHAT_ID = \r\nNF_URL=/custom/notifications\r\nNF_ROUTE_NAME=custom-nf\r\n```\r\n\r\n2. Теперь давайте определим нашу вспомогательную конфигурацию в `/config/nf.php`:\r\n\r\n```php\r\n    'telegramApiKey'    =\u003e env('TELEGRAM_API_KEY'),\r\n    'chatId'            =\u003e env('TELEGRAM_CHAT_ID'),\r\n    'email'             =\u003e env('NF_EMAIL'),\r\n    'vkToken'           =\u003e env('VK_TOKEN'),\r\n    'vkUserId'          =\u003e env('VK_USER_ID'),\r\n    'logger'            =\u003e true, // Разрешить логирование\r\n\r\n    'check'             =\u003e [\r\n\r\n        'active'        =\u003e true, // True Разрешить проверку или false Пропускать проверку\r\n        'guard'         =\u003e 'web', // Укажите через какой гард будет работать\r\n\r\n        'save_colum'    =\u003e 'id', // Поле для группы/роли или прав\r\n        'save_value'    =\u003e [\r\n            1, 2, 3\r\n        ], // добавляем массив значений\r\n\r\n    ],\r\n    \r\n    'routes'            =\u003e [\r\n\r\n        'url'           =\u003e env('NF_URL', '/notifications'),\r\n        'routeName'     =\u003e env('NF_ROUTE_NAME', 'nf'),\r\n\r\n    ],\r\n```\r\n\r\n\r\n\r\n3. Например, чтобы отправить уведомление на почту, отправьте POST запрос на `route('nf')` со следующими параметрами:\r\n\r\n```php\r\n{\r\n    \"type\": \"email\", // для отправки на почту\r\n    \"message\": \"Hello, world!\"\r\n    //'id': 'example@domain.com' email, 12345678 чат ид\r\n    // id не обязательный парамтр если он не передан то уведомление будет отправлены по дефолтным данным из .env\r\n}\r\n```\r\n\r\nлибо \r\n\r\n```php\r\n{\r\n    \"type\": \"telegram\", // для отправки в телеграм\r\n    \"message\": \"Hello, world!\"\r\n    //'id': 'example@domain.com' email, 12345678 чат ид\r\n    // id не обязательный парамтр если он не передан то уведомление будет отправлены по дефолтным данным из .env\r\n}\r\n```\r\n4.  Чтобы отправить уведомление на все каналы, отправьте POST запрос на `route('nf')` со следующими параметрами:\r\n\r\n\r\n```php\r\n{\r\n    \"type\": \"all\", // для отправки в все каналы\r\n    \"message\": \"Hello, world!\"\r\n}\r\n```\r\n\r\n5. Вы можете отправлять уведомления из любого места в вашем приложении, не только из контроллера. Для этого вам нужно создать экземпляр `NotificationService` и вызвать методы `sendEmail`, `sendTelegram` или `sendAll`, как мы это делали в команде Artisan.\r\n\r\nНапример, вы можете отправить уведомление на электронную почту в следующем коде:\r\n\r\n```php\r\nuse Sashagm\\Notification\\Services\\NotificationService;\r\n\r\n$notificationService = new NotificationService();\r\n$message = 'This is a test email notification.';\r\n$notificationService-\u003esendEmail($message);\r\n```\r\n\r\nАналогично, вы можете отправить уведомление в Telegram:\r\n\r\n```php\r\nuse Sashagm\\Notification\\Services\\NotificationService;\r\n\r\n$notificationService = new NotificationService();\r\n$message = 'This is a test Telegram notification.';\r\n$notificationService-\u003esendTelegram($message);\r\n```\r\n\r\nТак же можно отправить во все канылы:\r\n\r\n```php\r\nuse Sashagm\\Notification\\Services\\NotificationService;\r\n\r\n$notificationService = new NotificationService();\r\n$message = 'This is a test all chanel notification.';\r\n$notificationService-\u003esendAll($message);\r\n\r\n```\r\n\r\n\r\nПросто убедитесь, что вы импортировали класс `NotificationService` в ваш файл.\r\n\r\n#### Права доступа\r\n\r\nЕсли необходимо ограничить доступ можно в конфигурации  `/config/nf.php` изменить права доступа в разделе `check`:\r\n\r\n\r\n```php\r\n\r\n    'check'             =\u003e [\r\n\r\n        'active'        =\u003e true, // True Разрешить проверку или false Пропускать проверку\r\n        'guard'         =\u003e 'web', // Укажите через какой гард будет работать\r\n\r\n        'save_colum'    =\u003e 'id', // Поле для группы/роли или прав\r\n        'save_value'    =\u003e [\r\n            1, 2, 3\r\n        ], // добавляем массив значений\r\n\r\n    ],\r\n\r\n```\r\n\r\nДобавляем массив с значениями для разных вариаций. Например для данного примера показано что пользователи с id `1,2,3` имеют права доступа.\r\nТак же можно указать не id а roles, тогда можно настроить на группы/роли пользователей например `Админ, Модер, Редактор`.\r\n\r\n\r\n#### Кастомный гард\r\n\r\nЕсли необходимо использовать кастомный гард можно в конфигурации  `/config/nf.php` изменить в разделе `check` за это отвечает параметр `guard` по дефолту настроен на `web` и возвращает текущего аутентифицированного пользователя для стандартной охраны web. Это используется для аутентификации пользователей, которые входят через веб-интерфейс.\r\n\r\nЕсли указать кастомный гард то будет возвращать текущего аутентифицированного пользователя для охраны с именем кастомного гарда. Охрана с именем кастомного гарда может быть настроена в файле конфигурации Laravel для использования другой базы данных или другой модели пользователя.\r\n\r\nТаким образом можно изменять подходящий гард для проверки прав доступа для Middleware тем.\r\n\r\n#### Кастомный логер\r\n\r\nЕсли вы не хотите использовать стандартный файл для логирования, вы можете использовать отдельный файл и записывать данные логов туда.\r\nПросто измените путь до нового файла в конфигурации  `/config/nf.php` \r\n\r\n```php\r\n\r\n    'logger_method'     =\u003e true,              // Использовать дефолтный вариант логирования(false - Кастомный логер)\r\n    'logger_path'       =\u003e \"logs/custom.log\",  // Путь для кастомного логера\r\n    \r\n```\r\n\r\n#### Дополнительные возможности\r\n\r\nНаш пакет предоставляет ряд дополнительных возможностей, которые могут быть полезны при работе с уведомлениями:\r\n\r\n- `php artisan notification:install` - Данная команда установит все необходимые файлы.\r\n\r\n- `php artisan notification:test {type}` - Данная команда отправит тестовое уведомление на выбранный канал (email,telegram,all).\r\n\r\n- `php artisan notification:send {type} {message}  {--id=0}` - Данная команда отправит тестовое уведомление на выбранный канал с вашем сообщением (email,telegram, all). Для указания id можно отправить только либо на `email` своим адресом либо в `telegram` на свой ид чат.\r\n\r\n#### Тестирование\r\n\r\nДля проверки работоспособности можно выполнить специальную команду:\r\n\r\n- ./vendor/bin/phpunit --configuration phpunit.xml\r\n\r\n#### Лицензия\r\n\r\nLaravel Notification - это программное обеспечение с открытым исходным кодом, лицензированное по [MIT license](LICENSE.md ).\r\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashagm%2Fnotification","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsashagm%2Fnotification","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsashagm%2Fnotification/lists"}