diff --git a/app/Http/Controllers/SubjectController.php b/app/Http/Controllers/SubjectController.php index e66b6d2..e23715b 100644 --- a/app/Http/Controllers/SubjectController.php +++ b/app/Http/Controllers/SubjectController.php @@ -6,13 +6,18 @@ use App\Models\Node; use App\Models\Notice; use App\Models\Subject; +use Illuminate\Http\Request; use Illuminate\Support\Facades\Cache; use Inertia\Inertia; class SubjectController extends Controller { - public function index($course) + public function index(Request $request, $course) { + // If visiting root '/' and user explicitly preferred 'ssc', redirect cleanly on server side + if ($request->path() === '/' && $request->cookie('preferred_course') === 'ssc') { + return redirect('/ssc'); + } $subjects = Cache::rememberForever("home_page_subjects_{$course}", function () use ($course) { return Subject::orderBy('sort_order', 'asc') ->where('course', $course) diff --git a/bootstrap/app.php b/bootstrap/app.php index 9b3dd2f..f4829ba 100644 --- a/bootstrap/app.php +++ b/bootstrap/app.php @@ -21,6 +21,9 @@ health: '/up', ) ->withMiddleware(function (Middleware $middleware): void { + $middleware->encryptCookies(except: [ + 'preferred_course', + ]); $middleware->web(append: [ HandleInertiaRequests::class, AddLinkHeadersForPreloadedAssets::class, diff --git a/resources/js/components/AppLogo.vue b/resources/js/components/AppLogo.vue index edcf3f1..6151d87 100644 --- a/resources/js/components/AppLogo.vue +++ b/resources/js/components/AppLogo.vue @@ -4,10 +4,26 @@ import { computed } from 'vue'; const page = usePage(); const isSsc = computed(() => page.url.startsWith('/ssc')); + +const logoHref = computed(() => { + if (typeof window !== 'undefined') { + try { + const pref = localStorage.getItem('preferred_course'); + + if (pref === 'ssc') { +return '/ssc'; +} + } catch { + // ignore + } + } + + return isSsc.value ? '/ssc' : '/'; +});