Added User Settings

This commit is contained in:
2026-06-15 12:37:14 +10:00
parent a753bffaf8
commit a270913931
20 changed files with 451 additions and 102 deletions
+1 -1
View File
@@ -272,7 +272,7 @@ class FlightController extends Controller
$updated = $flight->snapshot($flight->id);
$this->recordChanges($flight, $dirty, $original, $updated);
return redirect()->route('profile.departure-board', [Auth::user()->name, $flight->id]);
return redirect()->route('profile.departure-board', [$flight->user->name, $flight->id]);
}
public function delete(UserFlight $flight, ?string $referrer = 'departure-board')
@@ -17,7 +17,7 @@ class FlightProfileController extends Controller
public function profileData(User $user, string $view, ?int $selectedFlightId = null) : array {
return [
'user' => $user,
'canEdit' => (auth()->check() && auth()->id() === $user->id) || auth()->user()->hasRole('admin'),
'canEdit' => (auth()->check() && auth()->id() === $user->id) || (auth()->check() && auth()->user()->hasRole('admin')),
'initialView' => $view,
'selectedFlightId' => $selectedFlightId,
'flight_api_url' => self::getUserFlightApiURL($user),
@@ -0,0 +1,29 @@
<?php
namespace App\Http\Controllers;
use App\Settings\SettingsRegistry;
use Illuminate\Http\Request;
class SettingsController extends Controller
{
public function show(Request $request)
{
$user = $request->user();
$current = array_merge(SettingsRegistry::defaults(), $user->settings ?? []);
$schema = SettingsRegistry::schema();
$fields = array_map(fn($field) => array_merge($field, [
'value' => $current[$field['key']] ?? $field['default'],
]), $schema);
return response()->json(['fields' => $fields]);
}
public function update(Request $request)
{
$validated = $request->validate(SettingsRegistry::validationRules());
$request->user()->updateSettings($validated['settings']);
return response()->json(['message' => 'Settings saved.']);
}
}
+15
View File
@@ -5,9 +5,11 @@ namespace App\Http\Controllers;
use App\Models\Followee;
use App\Models\Notification;
use App\Models\User;
use App\Settings\SettingsRegistry;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\RedirectResponse;
use Illuminate\Http\Request;
use Inertia\Inertia;
class UserController extends Controller
{
@@ -37,4 +39,17 @@ class UserController extends Controller
return response()->json(['following' => true]);
}
public function settings(){
$user = auth()->user();
$current = array_merge(SettingsRegistry::defaults(), $user->settings ?? []);
$fields = array_map(fn($field) => array_merge($field, [
'value' => $current[$field['key']] ?? $field['default'],
]), SettingsRegistry::schema());
return Inertia::render('UserSettings', [
'fields' => $fields,
'categories' => SettingsRegistry::categories(),
]);
}
}