Initialer Laravel Commit für BetiX
This commit is contained in:
73
app/Http/Controllers/Admin/WalletsAdminController.php
Normal file
73
app/Http/Controllers/Admin/WalletsAdminController.php
Normal file
@@ -0,0 +1,73 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Admin;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\AppSetting;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Inertia\Inertia;
|
||||
|
||||
class WalletsAdminController extends Controller
|
||||
{
|
||||
/**
|
||||
* GET /admin/wallets/settings — Wallet/Vault policies and limits.
|
||||
*/
|
||||
public function show()
|
||||
{
|
||||
$user = Auth::user();
|
||||
abort_unless($user && ($user->role === 'Admin' || $user->role === 'Owner'), 403);
|
||||
|
||||
$defaults = [
|
||||
'pin_max_attempts' => 5,
|
||||
'pin_lock_minutes' => 15,
|
||||
'min_tx_btx' => 0.0001,
|
||||
'max_tx_btx' => 100000,
|
||||
'daily_max_btx' => 100000,
|
||||
'actions_per_minute' => 20,
|
||||
'reason_required' => true,
|
||||
];
|
||||
$settings = AppSetting::get('wallet.settings', $defaults) ?: $defaults;
|
||||
// Ensure defaults filled
|
||||
$settings = array_replace($defaults, is_array($settings) ? $settings : []);
|
||||
|
||||
return Inertia::render('Admin/WalletsSettings', [
|
||||
'settings' => $settings,
|
||||
'defaults' => $defaults,
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /admin/wallets/settings — Save policies and limits.
|
||||
*/
|
||||
public function save(Request $request)
|
||||
{
|
||||
$user = Auth::user();
|
||||
abort_unless($user && ($user->role === 'Admin' || $user->role === 'Owner'), 403);
|
||||
|
||||
$data = $request->validate([
|
||||
'pin_max_attempts' => ['required','integer','min:1','max:20'],
|
||||
'pin_lock_minutes' => ['required','integer','min:1','max:1440'],
|
||||
'min_tx_btx' => ['required','numeric','min:0'],
|
||||
'max_tx_btx' => ['required','numeric','gt:min_tx_btx'],
|
||||
'daily_max_btx' => ['required','numeric','gte:max_tx_btx'],
|
||||
'actions_per_minute' => ['required','integer','min:1','max:600'],
|
||||
'reason_required' => ['required','boolean'],
|
||||
]);
|
||||
|
||||
// Normalize numeric precision (BTX uses 4 decimals commonly)
|
||||
$payload = [
|
||||
'pin_max_attempts' => (int) $data['pin_max_attempts'],
|
||||
'pin_lock_minutes' => (int) $data['pin_lock_minutes'],
|
||||
'min_tx_btx' => round((float) $data['min_tx_btx'], 4),
|
||||
'max_tx_btx' => round((float) $data['max_tx_btx'], 4),
|
||||
'daily_max_btx' => round((float) $data['daily_max_btx'], 4),
|
||||
'actions_per_minute' => (int) $data['actions_per_minute'],
|
||||
'reason_required' => (bool) $data['reason_required'],
|
||||
];
|
||||
|
||||
AppSetting::put('wallet.settings', $payload);
|
||||
|
||||
return back()->with('success', 'Wallet settings saved.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user