From 3aa93b358fd288a36644167b24c6341ff8f273ec Mon Sep 17 00:00:00 2001 From: "Siddhesh.More" Date: Mon, 10 Feb 2025 19:10:04 +0530 Subject: [PATCH] update --- .env | 3 ++- dev-dist/sw.js | 2 +- package-lock.json | 18 +++++++++++++++++ package.json | 2 ++ src/App.tsx | 12 +++++------ src/Pages/Login.tsx | 36 +++++++++++++++++++++++---------- src/Redux/Service/authSlice.tsx | 7 ++++--- vite.config.ts | 2 +- 8 files changed, 59 insertions(+), 23 deletions(-) diff --git a/.env b/.env index 90e2eef..b24b765 100644 --- a/.env +++ b/.env @@ -1,4 +1,5 @@ -VITE_API_URL=https://ssa.betadelivery.com/apia/v1 +VITE_API_URL='https://ssa.betadelivery.com/apia/v1' +# VITE_API_URL='http://192.16.50.44/seo-backend/apia/v1' VITE_USER_NAME="Admin" VITE_PASSWORD="71%@L%es^bUX94`J9XT*%4&^%tUU^%Q^ffgt" VITE_APP_NAME=MyViteApp \ No newline at end of file diff --git a/dev-dist/sw.js b/dev-dist/sw.js index 9c5feb8..acea9fc 100644 --- a/dev-dist/sw.js +++ b/dev-dist/sw.js @@ -82,7 +82,7 @@ define(['./workbox-54d0af47'], (function (workbox) { 'use strict'; "revision": "3ca0b8505b4bec776b69afdba2768812" }, { "url": "index.html", - "revision": "0.tg13lftuk78" + "revision": "0.i87c5gdh6n" }], {}); workbox.cleanupOutdatedCaches(); workbox.registerRoute(new workbox.NavigationRoute(workbox.createHandlerBoundToURL("index.html"), { diff --git a/package-lock.json b/package-lock.json index 1d95b8a..71d1d89 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,6 +15,7 @@ "axios": "^1.7.9", "chart.js": "^4.4.7", "framer-motion": "^11.18.0", + "js-cookie": "^3.0.5", "next-themes": "^0.4.4", "react": "^18.3.1", "react-chartjs-2": "^5.3.0", @@ -28,6 +29,7 @@ "devDependencies": { "@chakra-ui/cli": "^3.2.3", "@eslint/js": "^9.17.0", + "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", @@ -3292,6 +3294,13 @@ "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", "license": "MIT" }, + "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==", + "dev": true, + "license": "MIT" + }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -7394,6 +7403,15 @@ "node": ">=10" } }, + "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/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", diff --git a/package.json b/package.json index aef7be3..af0444f 100644 --- a/package.json +++ b/package.json @@ -17,6 +17,7 @@ "axios": "^1.7.9", "chart.js": "^4.4.7", "framer-motion": "^11.18.0", + "js-cookie": "^3.0.5", "next-themes": "^0.4.4", "react": "^18.3.1", "react-chartjs-2": "^5.3.0", @@ -30,6 +31,7 @@ "devDependencies": { "@chakra-ui/cli": "^3.2.3", "@eslint/js": "^9.17.0", + "@types/js-cookie": "^3.0.6", "@types/react": "^18.3.18", "@types/react-dom": "^18.3.5", "@vitejs/plugin-react": "^4.3.4", diff --git a/src/App.tsx b/src/App.tsx index fa6affb..2b7873a 100644 --- a/src/App.tsx +++ b/src/App.tsx @@ -1,20 +1,20 @@ -import { useContext } from 'react'; import { Route, BrowserRouter as Router, Routes } from "react-router-dom"; -import GlobalStateContext from './Contexts/GlobalStateContext'; import DefaultLayout from './Layouts/DefaultLayout'; import Login from './Pages/Login'; import { RouteLink } from './Routes/Routes'; +import Cookies from "js-cookie"; function App() { - const context = useContext(GlobalStateContext); - if (!context) throw new Error('App must be used within a GlobalStateProvider'); - const { isAuthenticate } = context; + // const context = useContext(GlobalStateContext); + // if (!context) throw new Error('App must be used within a GlobalStateProvider'); + // const { isAuthenticate } = context; + const token = Cookies.get("token") return ( } /> - {RouteLink.map(({ path, Component }, index) => (} />))}) : ()} /> + {RouteLink.map(({ path, Component }, index) => (} />))}) : ()} /> } /> diff --git a/src/Pages/Login.tsx b/src/Pages/Login.tsx index b8d4a68..a892ba1 100644 --- a/src/Pages/Login.tsx +++ b/src/Pages/Login.tsx @@ -9,6 +9,8 @@ import logo from '../assets/logo.svg' import { Button } from "../components/ui/button" import { Field } from "../components/ui/field" import { Toaster } from "../components/ui/toaster" +import { PasswordInput } from "../components/ui/password-input" +import { useNavigate } from "react-router-dom" interface FormValues { mobileNumber: number @@ -16,6 +18,7 @@ interface FormValues { } const Login = () => { + const navigate = useNavigate() const dispatch = useDispatch() const [isLoading, setIsLoading] = useState(false) const context = useContext(GlobalStateContext); @@ -35,13 +38,13 @@ const Login = () => { // Encode Basic Auth Credentials const username = import.meta.env.VITE_USER_NAME||''; // Replace with actual username const password = import.meta.env.VITE_PASSWORD||''; // Replace with actual password - const basicAuth = btoa(`${username}:${password}`); // Encode to Base64 + const basicAuth = `${username} : ${password}`; // Encode to Base64 try { - const response = await axios.post( - `${import.meta.env.VITE_API_URL}/v1/login`, + const res = await axios.post( + `${import.meta.env.VITE_API_URL}/login`, { - mobile_number: data.mobileNumber, + mobile_number: Number(data.mobileNumber), password: data.password, }, { @@ -51,11 +54,22 @@ const Login = () => { }, } ); + + if (res.data) { + setIsAuthenticate(true) + console.log('===================================='); + console.log(res.data?.data); + console.log('===================================='); + navigate('/') + dispatch(setToken(String(res.data?.data["access-token"]))); + } else { + + console.log("===================================="); + console.log(res); + console.log("===================================="); + + } - console.log("===================================="); - console.log(response); - console.log("===================================="); - dispatch(setToken(String(response.data["access-token"]))); } catch (error) { if (error) { @@ -101,11 +115,11 @@ const Login = () => { - + {/* Forget password */} - - + + {/* Forget password */} diff --git a/src/Redux/Service/authSlice.tsx b/src/Redux/Service/authSlice.tsx index f94a531..38ad1c4 100644 --- a/src/Redux/Service/authSlice.tsx +++ b/src/Redux/Service/authSlice.tsx @@ -1,11 +1,12 @@ import { createSlice, PayloadAction } from "@reduxjs/toolkit"; +import Cookies from "js-cookie"; type AuthState = { token: string | null; }; const initialState: AuthState = { - token: localStorage.getItem("token"), // Load token from localStorage + token: Cookies.get("token") || null, // Load token from cookies }; const authSlice = createSlice({ @@ -14,11 +15,11 @@ const authSlice = createSlice({ reducers: { setToken: (state, action: PayloadAction) => { state.token = action.payload; - localStorage.setItem("token", action.payload); + Cookies.set("token", action.payload, { expires: 7, secure: true, sameSite: "Strict" }); // Store in cookies for 7 days }, logout: (state) => { state.token = null; - localStorage.removeItem("token"); + Cookies.remove("token"); }, }, }); diff --git a/vite.config.ts b/vite.config.ts index 71b3004..8377a40 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -6,7 +6,7 @@ import { VitePWA } from "vite-plugin-pwa"; export default defineConfig({ server: { host: "0.0.0.0", - port: 3001, // You can use any port + port: 3000, // You can use any port }, plugins: [ react(),