mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-25 21:16:47 +00:00 
			
		
		
		
	Expand settings for notifications.
This commit is contained in:
		| @@ -26,6 +26,7 @@ namespace FireflyIII\Http\Controllers\Admin; | ||||
| use FireflyIII\Events\Test\TestNotificationChannel; | ||||
| use FireflyIII\Http\Controllers\Controller; | ||||
| use FireflyIII\Http\Requests\NotificationRequest; | ||||
| use FireflyIII\Notifications\Notifiables\OwnerNotifiable; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\RedirectResponse; | ||||
| use Illuminate\Http\Request; | ||||
| @@ -40,12 +41,21 @@ class NotificationController extends Controller | ||||
|         $mainTitleIcon = 'fa-hand-spock-o'; | ||||
|         $subTitle      = (string) trans('firefly.title_owner_notifications'); | ||||
|         $subTitleIcon  = 'envelope-o'; | ||||
|         $slackUrl      = app('fireflyconfig')->get('slack_webhook_url', '')->data; | ||||
|         $channels      = config('notifications.channels'); | ||||
| 
 | ||||
|         // notification settings:
 | ||||
|         $slackUrl          = app('fireflyconfig')->getEncrypted('slack_webhook_url', '')->data; | ||||
|         $pushoverAppToken  = app('fireflyconfig')->getEncrypted('pushover_app_token', '')->data; | ||||
|         $pushoverUserToken = app('fireflyconfig')->getEncrypted('pushover_user_token', '')->data; | ||||
| 
 | ||||
|         $ntfyServer = app('fireflyconfig')->getEncrypted('ntfy_server', 'https://ntfy.sh')->data; | ||||
|         $ntfyTopic  = app('fireflyconfig')->getEncrypted('ntfy_topic', '')->data; | ||||
|         $ntfyAuth   = app('fireflyconfig')->get('ntfy_auth', false)->data; | ||||
|         $ntfyUser   = app('fireflyconfig')->getEncrypted('ntfy_user', '')->data; | ||||
|         $ntfyPass   = app('fireflyconfig')->getEncrypted('ntfy_pass', '')->data; | ||||
| 
 | ||||
|         $channels           = config('notifications.channels'); | ||||
|         $forcedAvailability = []; | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
|         // admin notification settings:
 | ||||
|         $notifications = []; | ||||
|         foreach (config('notifications.notifications.owner') as $key => $info) { | ||||
| @@ -60,18 +70,24 @@ class NotificationController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // validate presence of of Ntfy settings.
 | ||||
|         if('' === (string)config('ntfy-notification-channel.topic')) { | ||||
|         if ('' === $ntfyTopic) { | ||||
|             Log::warning('No topic name for Ntfy, channel is disabled.'); | ||||
|             $forcedAvailability['ntfy'] = false; | ||||
|         } | ||||
| 
 | ||||
|         // validate pushover
 | ||||
|         if('' === (string)config('services.pushover.token') || '' === (string)config('services.pushover.user_token')) { | ||||
|         if ('' === $pushoverAppToken || '' === $pushoverUserToken) { | ||||
|             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')); | ||||
|         return view('admin.notifications.index', | ||||
|                     compact( | ||||
|                         'title', 'subTitle', 'forcedAvailability', 'mainTitleIcon', 'subTitleIcon', 'channels', | ||||
|                         'slackUrl', 'notifications', | ||||
|                         'pushoverAppToken', 'pushoverUserToken', | ||||
|                         'ntfyServer', 'ntfyTopic', 'ntfyAuth', 'ntfyUser', 'ntfyPass' | ||||
|                     )); | ||||
|     } | ||||
| 
 | ||||
|     public function postIndex(NotificationRequest $request): RedirectResponse | ||||
| @@ -83,12 +99,17 @@ class NotificationController extends Controller | ||||
|                 app('fireflyconfig')->set(sprintf('notification_%s', $key), $all[$key]); | ||||
|             } | ||||
|         } | ||||
|         if ('' === $all['slack_url']) { | ||||
|             app('fireflyconfig')->delete('slack_webhook_url'); | ||||
|         } | ||||
|         if ('' !== $all['slack_url']) { | ||||
|             app('fireflyconfig')->set('slack_webhook_url', $all['slack_url']); | ||||
|         $variables = ['slack_webhook_url', 'pushover_app_token', 'pushover_user_token', 'ntfy_server', 'ntfy_topic', 'ntfy_user', 'ntfy_pass']; | ||||
|         foreach ($variables as $variable) { | ||||
|             if ('' === $all[$variable]) { | ||||
|                 app('fireflyconfig')->delete($variable); | ||||
|             } | ||||
|             if ('' !== $all[$variable]) { | ||||
|                 app('fireflyconfig')->setEncrypted($variable, $all[$variable]); | ||||
|             } | ||||
|         } | ||||
|         app('fireflyconfig')->set('ntfy_auth', $all['ntfy_auth'] ?? false); | ||||
| 
 | ||||
| 
 | ||||
|         session()->flash('success', (string) trans('firefly.notification_settings_saved')); | ||||
| 
 | ||||
| @@ -109,10 +130,9 @@ class NotificationController extends Controller | ||||
|             case 'slack': | ||||
|             case 'pushover': | ||||
|             case 'ntfy': | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $owner = new OwnerNotifiable(); | ||||
|                 app('log')->debug(sprintf('Now in testNotification("%s") controller.', $channel)); | ||||
|                 event(new TestNotificationChannel($channel, $user)); | ||||
|                 event(new TestNotificationChannel($channel, $owner)); | ||||
|                 session()->flash('success', (string) trans('firefly.notification_test_executed', ['channel' => $channel])); | ||||
|         } | ||||
| 
 | ||||
|   | ||||
| @@ -23,8 +23,7 @@ declare(strict_types=1); | ||||
| 
 | ||||
| namespace FireflyIII\Http\Requests; | ||||
| 
 | ||||
| use FireflyIII\Rules\Admin\IsValidDiscordUrl; | ||||
| use FireflyIII\Rules\Admin\IsValidSlackUrl; | ||||
| use FireflyIII\Rules\Admin\IsValidSlackOrDiscordUrl; | ||||
| use FireflyIII\Support\Request\ChecksLogin; | ||||
| use FireflyIII\Support\Request\ConvertsDataTypes; | ||||
| use Illuminate\Foundation\Http\FormRequest; | ||||
| @@ -44,7 +43,16 @@ class NotificationRequest extends FormRequest | ||||
|             } | ||||
|             $return[$key] = $value; | ||||
|         } | ||||
|         $return['slack_url']   = $this->convertString('slack_url'); | ||||
|         $return['slack_webhook_url'] = $this->convertString('slack_webhook_url'); | ||||
| 
 | ||||
|         $return['pushover_app_token']  = $this->convertString('pushover_app_token'); | ||||
|         $return['pushover_user_token'] = $this->convertString('pushover_user_token'); | ||||
| 
 | ||||
|         $return['ntfy_server'] = $this->convertString('ntfy_server'); | ||||
|         $return['ntfy_topic']  = $this->convertString('ntfy_topic'); | ||||
|         $return['ntfy_auth']   = $this->convertBoolean($this->get('ntfy_auth')); | ||||
|         $return['ntfy_user']   = $this->convertString('ntfy_user'); | ||||
|         $return['ntfy_pass']   = $this->convertString('ntfy_pass'); | ||||
|         return $return; | ||||
|     } | ||||
| 
 | ||||
| @@ -54,7 +62,10 @@ class NotificationRequest extends FormRequest | ||||
|     public function rules(): array | ||||
|     { | ||||
|         $rules = [ | ||||
|             'slack_url'   => ['nullable', 'url', 'min:1', new IsValidSlackUrl()], | ||||
|             'slack_webhook_url'   => ['nullable', 'url', 'min:1', new IsValidSlackOrDiscordUrl()], | ||||
|             'ntfy_server' => ['nullable', 'url', 'min:1'], | ||||
|             'ntfy_user' => ['required_with:ntfy_pass,ntfy_auth', 'nullable', 'string', 'min:1'], | ||||
|             'ntfy_pass' => ['required_with:ntfy_user,ntfy_auth', 'nullable', 'string', 'min:1'], | ||||
|         ]; | ||||
|         foreach (config('notifications.notifications.owner') as $key => $info) { | ||||
|             $rules[sprintf('notification_%s', $key)] = 'in:0,1'; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user