diff --git a/bun.lock b/bun.lock index f6ebf33..38ffadb 100644 --- a/bun.lock +++ b/bun.lock @@ -19,6 +19,7 @@ "sonner": "^2.0.7", "tailwind-merge": "^3.4.0", "tw-animate-css": "^1.4.0", + "ua-parser-js": "^2.0.8", }, "devDependencies": { "@tailwindcss/postcss": "^4", @@ -663,6 +664,8 @@ "depd": ["depd@2.0.0", "", {}, "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw=="], + "detect-europe-js": ["detect-europe-js@0.1.2", "", {}, "sha512-lgdERlL3u0aUdHocoouzT10d9I89VVhk0qNRmll7mXdGfJT1/wqZ2ZLA4oJAjeACPY5fT1wsbq2AT+GkuInsow=="], + "detect-libc": ["detect-libc@2.1.2", "", {}, "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ=="], "detect-node-es": ["detect-node-es@1.1.0", "", {}, "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ=="], @@ -947,6 +950,8 @@ "is-shared-array-buffer": ["is-shared-array-buffer@1.0.4", "", { "dependencies": { "call-bound": "^1.0.3" } }, "sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A=="], + "is-standalone-pwa": ["is-standalone-pwa@0.1.1", "", {}, "sha512-9Cbovsa52vNQCjdXOzeQq5CnCbAcRk05aU62K20WO372NrTv0NxibLFCK6lQ4/iZEFdEA3p3t2VNOn8AJ53F5g=="], + "is-stream": ["is-stream@4.0.1", "", {}, "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A=="], "is-string": ["is-string@1.1.1", "", { "dependencies": { "call-bound": "^1.0.3", "has-tostringtag": "^1.0.2" } }, "sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA=="], @@ -1377,6 +1382,10 @@ "typescript-eslint": ["typescript-eslint@8.52.0", "", { "dependencies": { "@typescript-eslint/eslint-plugin": "8.52.0", "@typescript-eslint/parser": "8.52.0", "@typescript-eslint/typescript-estree": "8.52.0", "@typescript-eslint/utils": "8.52.0" }, "peerDependencies": { "eslint": "^8.57.0 || ^9.0.0", "typescript": ">=4.8.4 <6.0.0" } }, "sha512-atlQQJ2YkO4pfTVQmQ+wvYQwexPDOIgo+RaVcD7gHgzy/IQA+XTyuxNM9M9TVXvttkF7koBHmcwisKdOAf2EcA=="], + "ua-is-frozen": ["ua-is-frozen@0.1.2", "", {}, "sha512-RwKDW2p3iyWn4UbaxpP2+VxwqXh0jpvdxsYpZ5j/MLLiQOfbsV5shpgQiw93+KMYQPcteeMQ289MaAFzs3G9pw=="], + + "ua-parser-js": ["ua-parser-js@2.0.8", "", { "dependencies": { "detect-europe-js": "^0.1.2", "is-standalone-pwa": "^0.1.1", "ua-is-frozen": "^0.1.2" }, "bin": { "ua-parser-js": "script/cli.js" } }, "sha512-BdnBM5waFormdrOFBU+cA90R689V0tWUWlIG2i30UXxElHjuCu5+dOV2Etw3547jcQ/yaLtPm9wrqIuOY2bSJg=="], + "unbox-primitive": ["unbox-primitive@1.1.0", "", { "dependencies": { "call-bound": "^1.0.3", "has-bigints": "^1.0.2", "has-symbols": "^1.1.0", "which-boxed-primitive": "^1.1.1" } }, "sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw=="], "undici-types": ["undici-types@6.21.0", "", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="], diff --git a/package.json b/package.json index 188d0c4..74d3a25 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "shadcn": "^3.6.3", "sonner": "^2.0.7", "tailwind-merge": "^3.4.0", - "tw-animate-css": "^1.4.0" + "tw-animate-css": "^1.4.0", + "ua-parser-js": "^2.0.8" }, "devDependencies": { "@tailwindcss/postcss": "^4", diff --git a/shared/helper/backendFetch.ts b/shared/helper/backendFetch.ts index 9b0de2b..fe1a273 100644 --- a/shared/helper/backendFetch.ts +++ b/shared/helper/backendFetch.ts @@ -1,4 +1,7 @@ "use server"; +import { headers } from "next/headers"; +import { UAParser } from "ua-parser-js"; + export interface BackendResponse { success: boolean; message: string; @@ -7,10 +10,23 @@ export interface BackendResponse { } export const backendFetch = async (path: string, options: RequestInit = {}) => { + const userAgent = (await headers()).get("user-agent") || ""; + const userIp = (await headers()).get("x-forwarded-for") || "unknown"; + const ua = new UAParser(userAgent).getResult(); + const clientInfo = { + os: ua.os.name ?? "unknown", + osVersion: ua.os.version ?? "unknown", + browser: ua.browser.name ?? "unknown", + browserVersion: ua.browser.version ?? "unknown", + deviceType: ua.device.type ?? "desktop", + ip: userIp, + }; + const res = await fetch(`${process.env.BACKEND_ENDPOINT}/${path}`, { ...options, headers: { "Content-Type": "application/json", + "x-client-info": JSON.stringify(clientInfo), Authorization: `Bearer ${process.env.BACKEND_API_KEY}`, ...options.headers, }, diff --git a/shared/providers/AuthSession.tsx b/shared/providers/AuthSession.tsx new file mode 100644 index 0000000..66a049b --- /dev/null +++ b/shared/providers/AuthSession.tsx @@ -0,0 +1,10 @@ +import { cookies } from "next/headers"; +import React from "react"; + +const AuthSessionProvider = ({children}: readonly<{children: React.ReactNode}>) => { + const cookieHeader = cookies().toString(); + console.log("Cookies in AuthSessionProvider:", cookieHeader); + return {children}; +}; + +export default AuthSessionProvider; diff --git a/shared/widgets/navbar/components/Navbar.tsx b/shared/widgets/navbar/components/Navbar.tsx index 6e9372a..bb314d9 100644 --- a/shared/widgets/navbar/components/Navbar.tsx +++ b/shared/widgets/navbar/components/Navbar.tsx @@ -2,8 +2,6 @@ import Image from "next/image"; import NavigationLink from "./NavigationLink"; import SignIn from "./SignIn"; -import { Dialog, DialogTrigger } from "@/shared/libs/shadcn/ui/dialog"; -import PopupWrapper from "../../signin/components/PopupWrapper"; const Navbar = () => { return (