mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-09-20 19:35:16 +00:00
Add support for Pushover
This commit is contained in:
@@ -189,6 +189,14 @@ NTFY_AUTH_ENABLED=false
|
||||
NTFY_AUTH_USERNAME=
|
||||
NTFY_AUTH_PASSWORD=
|
||||
|
||||
#
|
||||
# Pushover notification Application/API Token and User token.
|
||||
# Used if you want to receive notifications over pushover.
|
||||
# Both must be configured for this channel to work.
|
||||
#
|
||||
PUSHOVER_APP_TOKEN=
|
||||
PUSHOVER_USER_TOKEN=
|
||||
|
||||
# Firefly III can send you the following messages.
|
||||
SEND_ERROR_MESSAGE=true
|
||||
|
||||
|
@@ -32,6 +32,7 @@ use FireflyIII\Notifications\Admin\VersionCheckResult;
|
||||
use FireflyIII\Notifications\Test\TestNotificationDiscord;
|
||||
use FireflyIII\Notifications\Test\TestNotificationEmail;
|
||||
use FireflyIII\Notifications\Test\TestNotificationNtfy;
|
||||
use FireflyIII\Notifications\Test\TestNotificationPushover;
|
||||
use FireflyIII\Notifications\Test\TestNotificationSlack;
|
||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
@@ -134,6 +135,9 @@ class AdminEventHandler
|
||||
case 'ntfy':
|
||||
$class = TestNotificationNtfy::class;
|
||||
break;
|
||||
case 'pushover':
|
||||
$class = TestNotificationPushover::class;
|
||||
break;
|
||||
default:
|
||||
app('log')->error(sprintf('Unknown channel "%s" in sendTestNotification method.', $event->channel));
|
||||
return;
|
||||
|
@@ -65,6 +65,12 @@ class NotificationController extends Controller
|
||||
$forcedAvailability['ntfy'] = false;
|
||||
}
|
||||
|
||||
// validate pushover
|
||||
if('' === (string)config('services.pushover.token') || '' === (string)config('services.pushover.user_token')) {
|
||||
Log::warning('No Pushover token, channel is disabled.');
|
||||
$forcedAvailability['pushover'] = false;
|
||||
}
|
||||
|
||||
return view('admin.notifications.index', compact('title', 'subTitle', 'forcedAvailability', 'mainTitleIcon', 'subTitleIcon', 'channels', 'slackUrl', 'notifications'));
|
||||
}
|
||||
|
||||
@@ -101,6 +107,7 @@ class NotificationController extends Controller
|
||||
break;
|
||||
case 'email':
|
||||
case 'slack':
|
||||
case 'pushover':
|
||||
case 'ntfy':
|
||||
/** @var User $user */
|
||||
$user = auth()->user();
|
||||
|
115
app/Notifications/Test/TestNotificationPushover.php
Normal file
115
app/Notifications/Test/TestNotificationPushover.php
Normal file
@@ -0,0 +1,115 @@
|
||||
<?php
|
||||
|
||||
/*
|
||||
* TestNotification.php
|
||||
* Copyright (c) 2022 james@firefly-iii.org
|
||||
*
|
||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Affero General Public License as
|
||||
* published by the Free Software Foundation, either version 3 of the
|
||||
* License, or (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Affero General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
* along with this program. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace FireflyIII\Notifications\Test;
|
||||
|
||||
use Illuminate\Bus\Queueable;
|
||||
use Illuminate\Notifications\Messages\MailMessage;
|
||||
use Illuminate\Notifications\Notification;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
use NotificationChannels\Pushover\PushoverChannel;
|
||||
use NotificationChannels\Pushover\PushoverMessage;
|
||||
use Ntfy\Message;
|
||||
use Wijourdil\NtfyNotificationChannel\Channels\NtfyChannel;
|
||||
|
||||
//use Illuminate\Notifications\Slack\SlackMessage;
|
||||
|
||||
/**
|
||||
* Class TestNotification
|
||||
*/
|
||||
class TestNotificationPushover extends Notification
|
||||
{
|
||||
use Queueable;
|
||||
|
||||
private string $address;
|
||||
|
||||
/**
|
||||
* Create a new notification instance.
|
||||
*/
|
||||
public function __construct(string $address)
|
||||
{
|
||||
$this->address = $address;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the array representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function toArray($notifiable)
|
||||
{
|
||||
return [
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
public function toPushover(mixed $notifiable): PushoverMessage
|
||||
{
|
||||
Log::debug('Now in toPushover()');
|
||||
return PushoverMessage::create((string)trans('email.admin_test_message', ['channel' => 'Pushover']))
|
||||
->title((string)trans('email.admin_test_subject'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the mail representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
||||
*
|
||||
* @return MailMessage
|
||||
*/
|
||||
public function toMail($notifiable)
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the Slack representation of the notification.
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
||||
*
|
||||
*/
|
||||
public function toSlack($notifiable) {
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the notification's delivery channels.
|
||||
*
|
||||
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
|
||||
*
|
||||
* @param mixed $notifiable
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function via($notifiable)
|
||||
{
|
||||
return [PushoverChannel::class];
|
||||
}
|
||||
}
|
@@ -66,6 +66,7 @@ use Illuminate\Support\Collection;
|
||||
use Illuminate\Support\Str;
|
||||
use Laravel\Passport\HasApiTokens;
|
||||
use Laravel\Passport\Token;
|
||||
use NotificationChannels\Pushover\PushoverReceiver;
|
||||
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
|
||||
|
||||
/**
|
||||
@@ -101,6 +102,12 @@ class User extends Authenticatable
|
||||
|
||||
throw new NotFoundHttpException();
|
||||
}
|
||||
public function routeNotificationForPushover()
|
||||
{
|
||||
return PushoverReceiver::withUserKey((string) config('services.pushover.user_token'))
|
||||
->withApplicationToken((string) config('services.pushover.token'));
|
||||
//return (string) config('services.pushover.token');
|
||||
}
|
||||
|
||||
/**
|
||||
* Link to accounts.
|
||||
|
@@ -90,6 +90,7 @@
|
||||
"jc5/recovery": "^2",
|
||||
"laravel-json-api/laravel": "^4.0",
|
||||
"laravel-json-api/non-eloquent": "^4.0",
|
||||
"laravel-notification-channels/pushover": "^4.0",
|
||||
"laravel/framework": "^11",
|
||||
"laravel/passport": "^12",
|
||||
"laravel/sanctum": "^4",
|
||||
|
64
composer.lock
generated
64
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "a2800d2f481f640d8cd058b3b31e8962",
|
||||
"content-hash": "a739782c3c7121d1e9c0d31105b5974a",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
@@ -2546,6 +2546,68 @@
|
||||
},
|
||||
"time": "2024-06-20T19:46:31+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel-notification-channels/pushover",
|
||||
"version": "4.0.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/laravel-notification-channels/pushover.git",
|
||||
"reference": "31ff8c124f54de69673145c90836dd6cf7a01223"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/laravel-notification-channels/pushover/zipball/31ff8c124f54de69673145c90836dd6cf7a01223",
|
||||
"reference": "31ff8c124f54de69673145c90836dd6cf7a01223",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"guzzlehttp/guzzle": "^7.0.1",
|
||||
"illuminate/notifications": "^8.0 || ^9.0 || ^10.0 || ^11.0",
|
||||
"illuminate/support": "^8.0 || ^9.0 || ^10.0 || ^11.0",
|
||||
"php": "^8.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"dms/phpunit-arraysubset-asserts": ">=0.1.0",
|
||||
"mockery/mockery": "^1.3.1",
|
||||
"orchestra/testbench": "^8.0 || ^9.0",
|
||||
"phpunit/phpunit": "^9.3 || ^10.5"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-exif": "Required for image attachment support"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"NotificationChannels\\Pushover\\PushoverServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"NotificationChannels\\Pushover\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Casper Boone",
|
||||
"email": "mail@casperboone.nl",
|
||||
"homepage": "https://casperboone.nl",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "Pushover notifications for Laravel.",
|
||||
"homepage": "https://github.com/laravel-notification-channels/pushover",
|
||||
"support": {
|
||||
"issues": "https://github.com/laravel-notification-channels/pushover/issues",
|
||||
"source": "https://github.com/laravel-notification-channels/pushover/tree/4.0.0"
|
||||
},
|
||||
"time": "2024-03-20T08:14:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "laravel/framework",
|
||||
"version": "v11.34.0",
|
||||
|
@@ -25,7 +25,7 @@ return [
|
||||
'email' => ['enabled' => true, 'ui_configurable' => 0,],
|
||||
'slack' => ['enabled' => true, 'ui_configurable' => 1,],
|
||||
'ntfy' => ['enabled' => true, 'ui_configurable' => 0,],
|
||||
'pushover' => ['enabled' => false, 'ui_configurable' => 0,],
|
||||
'pushover' => ['enabled' => true, 'ui_configurable' => 0,],
|
||||
'gotify' => ['enabled' => false, 'ui_configurable' => 0,],
|
||||
'pushbullet' => ['enabled' => false, 'ui_configurable' => 0,],
|
||||
],
|
||||
|
@@ -61,4 +61,8 @@ return [
|
||||
'mandrill' => [
|
||||
'secret' => env('MANDRILL_SECRET'),
|
||||
],
|
||||
'pushover' => [
|
||||
'token' => env('PUSHOVER_APP_TOKEN', ''),
|
||||
'user_token' => env('PUSHOVER_USER_TOKEN', ''),
|
||||
],
|
||||
];
|
||||
|
@@ -2509,6 +2509,9 @@ return [
|
||||
'test_notification_channel_name_email' => 'Test email',
|
||||
'test_notification_channel_name_slack' => 'Test Slack',
|
||||
'test_notification_channel_name_ntfy' => 'Test Ntfy.sh',
|
||||
'test_notification_channel_name_pushover' => 'Test Pushover',
|
||||
'test_notification_channel_name_gotify' => 'Test Gotify',
|
||||
'test_notification_channel_name_pushbullet' => 'Test Pushbullet',
|
||||
|
||||
'split_transaction_title' => 'Description of the split transaction',
|
||||
'split_transaction_title_help' => 'If you create a split transaction, there must be a global description for all splits of the transaction.',
|
||||
|
Reference in New Issue
Block a user