feat: redirect home to dashboard untuk user yang sudah login

- Update authMiddleware: dashboard untuk semua user, admin hanya untuk admin
- Tambah redirect otomatis dari / ke /dashboard jika sudah login
- User biasa sekarang bisa akses halaman dashboard
- Admin panel tetap terbatas untuk role admin saja

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
This commit is contained in:
2026-03-12 15:38:30 +08:00
parent 918399bf62
commit 745cbf9f2f
2 changed files with 30 additions and 2 deletions

View File

@@ -68,8 +68,18 @@ const routeRules: RouteRule[] = [
{
match: (p) => p === "/dashboard" || p.startsWith("/dashboard/"),
requireAuth: true,
redirectTo: "/signin",
},
{
match: (p) => p === "/admin" || p.startsWith("/admin/"),
requireAuth: true,
requiredRole: "admin",
redirectTo: "/profile",
redirectTo: "/dashboard",
},
{
match: (p) => p === "/" || p === "",
requireAuth: false,
redirectTo: "/dashboard",
},
];

View File

@@ -32,11 +32,29 @@ import {
IconStack2,
IconSun,
} from "@tabler/icons-react";
import { createFileRoute, Link } from "@tanstack/react-router";
import { createFileRoute, Link, useNavigate } from "@tanstack/react-router";
import { useEffect, useState } from "react";
import { useSnapshot } from "valtio";
import { authStore } from "@/store/auth";
export const Route = createFileRoute("/")({
component: HomePage,
beforeLoad: async () => {
// Check if user is already logged in
const session = await fetch("/api/session", {
method: "GET",
credentials: "include",
}).then((res) => (res.ok ? res.json() : null));
// If user is logged in, redirect to dashboard
if (session?.data?.user) {
throw {
redirect: {
to: "/dashboard",
},
};
}
},
});
// Navigation items