Initialer Laravel Commit für BetiX
This commit is contained in:
79
app/Http/Controllers/Admin/SiteSettingsController.php
Normal file
79
app/Http/Controllers/Admin/SiteSettingsController.php
Normal file
@@ -0,0 +1,79 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\AppSetting;
|
||||
use Illuminate\Http\Request;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class SiteSettingsController extends Controller
|
||||
{
|
||||
private const KEY = 'site.settings';
|
||||
|
||||
private array $defaults = [
|
||||
'site_name' => 'BetiX Casino',
|
||||
'site_tagline' => 'Play. Win. Repeat.',
|
||||
'primary_color' => '#df006a',
|
||||
'logo_url' => '',
|
||||
'favicon_url' => '',
|
||||
'maintenance_mode' => false,
|
||||
'registration_open' => true,
|
||||
'min_deposit_usd' => 10,
|
||||
'max_deposit_usd' => 50000,
|
||||
'min_withdrawal_usd' => 20,
|
||||
'max_withdrawal_usd' => 100000,
|
||||
'max_bet_usd' => 5000,
|
||||
'house_edge_percent' => 1.0,
|
||||
'footer_text' => '',
|
||||
'support_email' => '',
|
||||
'terms_url' => '/terms',
|
||||
'privacy_url' => '/privacy',
|
||||
'currency_symbol' => 'BTX',
|
||||
];
|
||||
|
||||
public function show()
|
||||
{
|
||||
$saved = AppSetting::get(self::KEY, []);
|
||||
$settings = array_merge($this->defaults, is_array($saved) ? $saved : []);
|
||||
|
||||
return Inertia::render('Admin/SiteSettings', [
|
||||
'settings' => $settings,
|
||||
]);
|
||||
}
|
||||
|
||||
public function save(Request $request)
|
||||
{
|
||||
// Normalize empty strings to null so URL/email validation doesn't fail on blank fields
|
||||
foreach (['logo_url', 'favicon_url', 'terms_url', 'privacy_url', 'support_email', 'site_tagline', 'footer_text'] as $field) {
|
||||
if ($request->input($field) === '') {
|
||||
$request->merge([$field => null]);
|
||||
}
|
||||
}
|
||||
|
||||
$data = $request->validate([
|
||||
'site_name' => 'required|string|max:100',
|
||||
'site_tagline' => 'nullable|string|max:200',
|
||||
'primary_color' => 'required|regex:/^#[0-9a-fA-F]{6}$/',
|
||||
'logo_url' => 'nullable|url|max:500',
|
||||
'favicon_url' => 'nullable|url|max:500',
|
||||
'maintenance_mode' => 'boolean',
|
||||
'registration_open' => 'boolean',
|
||||
'min_deposit_usd' => 'required|numeric|min:0',
|
||||
'max_deposit_usd' => 'required|numeric|min:0',
|
||||
'min_withdrawal_usd' => 'required|numeric|min:0',
|
||||
'max_withdrawal_usd' => 'required|numeric|min:0',
|
||||
'max_bet_usd' => 'required|numeric|min:0',
|
||||
'house_edge_percent' => 'required|numeric|min:0|max:100',
|
||||
'footer_text' => 'nullable|string|max:1000',
|
||||
'support_email' => 'nullable|email|max:200',
|
||||
'terms_url' => 'nullable|string|max:500',
|
||||
'privacy_url' => 'nullable|string|max:500',
|
||||
'currency_symbol' => 'required|string|max:10',
|
||||
]);
|
||||
|
||||
AppSetting::put(self::KEY, $data);
|
||||
|
||||
return back()->with('success', 'Site settings saved.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user