59 lines
1.7 KiB
PHP
59 lines
1.7 KiB
PHP
<?php
|
|||
|
|
|
||
|
|
namespace App\Http\Controllers;
|
||
|
|
|
||
|
|
use Illuminate\Http\Request;
|
||
|
|
|
||
|
|
class SettingsController extends Controller
|
||
|
|
{
|
||
|
|
public function index()
|
||
|
|
{
|
||
|
|
$preferences = auth()->user()->notification_preferences ?? [
|
||
|
|
'uptime' => ['mail'],
|
||
|
|
'ssl' => ['mail'],
|
||
|
|
'broken_links' => ['mail']
|
||
|
|
];
|
||
|
|
|
||
|
|
$slackWebhook = env('SLACK_WEBHOOK_URL', '');
|
||
|
|
|
||
|
|
return view('settings', compact('preferences', 'slackWebhook'));
|
||
|
|
}
|
||
|
|
|
||
|
|
public function updateNotifications(Request $request)
|
||
|
|
{
|
||
|
|
$request->validate([
|
||
|
|
'uptime' => 'nullable|array',
|
||
|
|
'uptime.*' => 'in:mail,slack',
|
||
|
|
'ssl' => 'nullable|array',
|
||
|
|
'ssl.*' => 'in:mail,slack',
|
||
|
|
'broken_links' => 'nullable|array',
|
||
|
|
'broken_links.*' => 'in:mail,slack',
|
||
|
|
]);
|
||
|
|
|
||
|
|
$preferences = [
|
||
|
|
'uptime' => $request->input('uptime', []),
|
||
|
|
'ssl' => $request->input('ssl', []),
|
||
|
|
'broken_links' => $request->input('broken_links', []),
|
||
|
|
];
|
||
|
|
|
||
|
|
auth()->user()->update([
|
||
|
|
'notification_preferences' => $preferences
|
||
|
|
]);
|
||
|
|
|
||
|
|
return redirect()->route('settings')
|
||
|
|
->with('success', 'Notification preferences updated successfully.');
|
||
|
|
}
|
||
|
|
|
||
|
|
public function updateSlack(Request $request)
|
||
|
|
{
|
||
|
|
$request->validate([
|
||
|
|
'slack_webhook' => 'nullable|url'
|
||
|
|
]);
|
||
|
|
|
||
|
|
// Note: In a production app, you would store this in the user's settings or env
|
||
|
|
// For now, we'll just return a message
|
||
|
|
return redirect()->route('settings')
|
||
|
|
->with('success', 'Slack webhook URL saved. Please add it to your .env file as SLACK_WEBHOOK_URL.');
|
||
|
|
}
|
||
|
|
}
|