diff --git a/app/LoginPage.tsx b/app/LoginPage.tsx
index 042e417..dc0ed00 100644
--- a/app/LoginPage.tsx
+++ b/app/LoginPage.tsx
@@ -1,49 +1,71 @@
"use client";
import Image from "next/image"
-import Link from "next/link"
+import { useState } from "react";
+import { useRouter } from "next/navigation";
+import axios from "axios";
+import Cookies from "js-cookie";
+import ErrorToast from "@/components/Error";
export default function LoginPage() {
+ const [email, setEmail] = useState("");
+ const [password, setPassword] = useState("");
+ const [remember, setRemember] = useState(false);
+
+ const [error, setError] = useState("");
+ const router = useRouter();
+
+ const login = async () => {
+ try {
+ const response = await axios.post("/api/user/login", { email, password, remember });
+
+ if (response.status === 200) {
+ const token = response.data.token;
+ if (token) {
+ Cookies.set("token", token);
+ router.push("/dashboard");
+ } else {
+ setError("No login token received");
+ }
+ }
+ } catch (error: any) {
+ setError(error.response.data.error);
+ }
+ };
return (
-
+
Welcome back
Please login with your account
-
@@ -68,6 +90,8 @@ export default function LoginPage() {
priority
/>
+
+
setError("")} />
)
}
diff --git a/package-lock.json b/package-lock.json
index 5459a8a..62a0cf5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,10 +9,12 @@
"version": "2.0.0",
"dependencies": {
"@prisma/client": "^6.8.2",
+ "@types/js-cookie": "^3.0.6",
"@types/jsonwebtoken": "^9.0.9",
"axios": "^1.9.0",
"bcryptjs": "^3.0.2",
"daisyui": "^5.0.35",
+ "js-cookie": "^3.0.5",
"jsonwebtoken": "^9.0.2",
"lucide-react": "^0.511.0",
"next": "15.3.2",
@@ -1016,6 +1018,12 @@
"tailwindcss": "4.1.7"
}
},
+ "node_modules/@types/js-cookie": {
+ "version": "3.0.6",
+ "resolved": "https://registry.npmjs.org/@types/js-cookie/-/js-cookie-3.0.6.tgz",
+ "integrity": "sha512-wkw9yd1kEXOPnvEeEV1Go1MmxtBJL0RR79aOTAApecWFVu7w0NNXNqhcWgvw2YgZDYadliXkl14pa3WXw5jlCQ==",
+ "license": "MIT"
+ },
"node_modules/@types/jsonwebtoken": {
"version": "9.0.9",
"resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-9.0.9.tgz",
@@ -1483,6 +1491,15 @@
"jiti": "lib/jiti-cli.mjs"
}
},
+ "node_modules/js-cookie": {
+ "version": "3.0.5",
+ "resolved": "https://registry.npmjs.org/js-cookie/-/js-cookie-3.0.5.tgz",
+ "integrity": "sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==",
+ "license": "MIT",
+ "engines": {
+ "node": ">=14"
+ }
+ },
"node_modules/jsonwebtoken": {
"version": "9.0.2",
"resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz",
diff --git a/package.json b/package.json
index 7c90cf8..bc99067 100644
--- a/package.json
+++ b/package.json
@@ -10,10 +10,12 @@
},
"dependencies": {
"@prisma/client": "^6.8.2",
+ "@types/js-cookie": "^3.0.6",
"@types/jsonwebtoken": "^9.0.9",
"axios": "^1.9.0",
"bcryptjs": "^3.0.2",
"daisyui": "^5.0.35",
+ "js-cookie": "^3.0.5",
"jsonwebtoken": "^9.0.2",
"lucide-react": "^0.511.0",
"next": "15.3.2",