use BookStack\Entities\Models\Entity;
use BookStack\Permissions\PermissionApplicator;
use BookStack\Users\Models\User;
+use Illuminate\Support\Facades\Log;
abstract class BaseNotificationHandler implements NotificationHandler
{
- public function __construct(
- protected PermissionApplicator $permissionApplicator
- ) {
- }
-
/**
* @param class-string<BaseActivityNotification> $notification
* @param int[] $userIds
}
// Prevent sending if the user does not have access to the related content
- if (!$this->permissionApplicator->checkOwnableUserAccess($relatedModel, 'view')) {
+ $permissions = new PermissionApplicator($user);
+ if (!$permissions->checkOwnableUserAccess($relatedModel, 'view')) {
continue;
}
// Send the notification
- $user->notify(new $notification($detail, $initiator));
+ try {
+ $user->notify(new $notification($detail, $initiator));
+ } catch (\Exception $exception) {
+ Log::error("Failed to send email notification to user [id:{$user->id}] with error: {$exception->getMessage()}");
+ }
}
}
}