diff --git a/apps/web/src/app.tsx b/apps/web/src/app.tsx
index 93b7301..5626052 100644
--- a/apps/web/src/app.tsx
+++ b/apps/web/src/app.tsx
@@ -5,7 +5,7 @@ import {
Navigate,
} from "react-router-dom";
import { AuthInitializer } from "@/components/auth-initializer";
-// import { AuthGuard } from "@/components/auth-guard";
+import { AuthGuard } from "@/components/auth-guard";
import { DashboardPage } from "@/pages/dashboard-page";
import { ScanPage } from "@/pages/scan-page";
import { LibraryPage } from "@/pages/library-page";
@@ -14,78 +14,119 @@ import { DiseaseDetailPage } from "@/pages/disease-detail-page";
import { DiagnosisDetailPage } from "@/pages/diagnosis-detail-page";
import { ExpertReviewsPage } from "@/pages/expert-reviews-page";
import { DiagnosesPage } from "@/pages/diagnoses-page";
-// import { LoginPage } from "@/pages/login-page";
-// import { RegisterPage } from "@/pages/register-page";
+import { LoginPage } from "@/pages/login-page";
+import { RegisterPage } from "@/pages/register-page";
import { MainLayout } from "@/components/layout/main-layout";
+import { useEffect } from "react";
+import { useAuthStore } from "@/store/auth-store";
+import { apiClient } from "@/lib/api-client";
+
+function LogoutProses() {
+ const setUser = useAuthStore((state) => state.setUser);
+
+ useEffect(() => {
+ apiClient.logout().then(() => {
+ setUser(null);
+
+ }).catch((error) => {
+ console.error("Oops, gagal logout dari server:", error);
+ setUser(null);
+ });
+ }, [setUser]);
+
+ return ;
+}
const queryClient = new QueryClient();
const router = createBrowserRouter([
- { path: "/", element: },
- // { path: "/login", element: },
- // { path: "/register", element: },
+ { path: "/", element: },
+ { path: "/login", element: },
+ { path: "/register", element: },
{
path: "/dashboard",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/scan",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/library",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/diagnoses",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/diagnoses/:id",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/expert/reviews",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/catalog",
element: (
-
-
-
+
+
+
+
+
),
},
{
path: "/catalog/:slug",
element: (
-
-
-
+
+
+
+
+
+ ),
+ },
+ {
+ path: "/logout",
+ element: (
+
),
},
]);
diff --git a/apps/web/src/components/layout/mobile-nav.tsx b/apps/web/src/components/layout/mobile-nav.tsx
index c5f68dc..a28c161 100644
--- a/apps/web/src/components/layout/mobile-nav.tsx
+++ b/apps/web/src/components/layout/mobile-nav.tsx
@@ -1,6 +1,6 @@
import { createPortal } from "react-dom";
import { Link, useLocation } from "react-router-dom";
-import { X, Leaf } from "lucide-react";
+import { X, Leaf, LogOut } from "lucide-react";
type Props = {
open: boolean;
@@ -22,7 +22,6 @@ export function MobileNav({ open, onClose }: Props) {
const navContent = (
);
})}
+
+ Keluar
+
+
diff --git a/apps/web/src/components/layout/navbar.tsx b/apps/web/src/components/layout/navbar.tsx
index 20993e1..f5511d5 100644
--- a/apps/web/src/components/layout/navbar.tsx
+++ b/apps/web/src/components/layout/navbar.tsx
@@ -1,6 +1,6 @@
import { useState } from "react";
import { Link, useLocation } from "react-router-dom";
-import { Leaf, Menu } from "lucide-react";
+import { Leaf, LogOut, Menu } from "lucide-react";
import { MobileNav } from "./mobile-nav";
export function Navbar() {
@@ -43,7 +43,7 @@ export function Navbar() {
Dashboard
- Scan Tanaman
+ Scan Daun
- Review
+ Hasil Pakar
+
+
+ Keluar