Web Push
60 sites
No security coverage
This module enables sending web push notifications to desktop and mobile devices using the Push API. It allows configuring notification services, managing subscribers, sending notifications, and providing a subscription block to users.
Description
The module manage send of notification (desktop / mobile / ...) using the Push API.
The module allow you to:
- Configure a web push notification service
- Manage the list of subscriber
- Send notifications
- Display a bloc to subscribe and unsubscribe (Web Push block)
- Use an other Service Worker, for example if you use the PWA module
The module doesn't manage:
- Automatic push send, you have to define your own rules and use the service given, see example below
- Automatic deletion of invalid subscribe
- Protection against CSRF/XSRF (https://developer.mozilla.org/en-US/docs/Web/API/Push_API)
Web Push use the Push API to manage subscribe / unsubscribe to Push notification.
The module use the library minishlink/web-push to send the notifications. This library doesn't use a Third Party.
Requirements
- php >=8.0
- minishlink/web-push
Installation
- Install and enable this module like any other Drupal module.
Configuration
- Configure the Authentication (VAPID) at the page /admin/config/services/web-push/VAPID, 2 methods :
- use auto generate
- generate it manually, more details
- Configure the default options /admin/config/services/web-push/default-settings
- Give the permission to Access POST on REST for Web Push subscription resource
- Clear your cache
Security advice
Security optimization:
- Rate limit on the POST request ?
- Flood control can be enable : /admin/config/services/web-push/security
- Avoid CrossDomain (CORS), server configuraton ?
- https://www.drupal.org/project/seckit
Example
\Drupal::service('web_push.manager')->sendNotification(
'Notification Title',
'Notification Body',
'noticiation-redirect-url',
'notification-icon-url',
\Drupal\web_push\Service\WebPushSender::URGENCY_HIGH
);
Sponsor
Agence du Numérique en Santé (ANS)