jwt-cookie.ts 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  1. // import { NEXT_AUTH_SECRET } from "./constants";
  2. export const encodeJWT = (payload: object): string => {
  3. try {
  4. const jsonStr = JSON.stringify(payload);
  5. const encodedPayload = btoa(encodeURIComponent(jsonStr));
  6. const header = btoa(JSON.stringify({ alg: "none", typ: "JWT" }));
  7. // const token = `${header}.${encodedPayload}.${NEXT_AUTH_SECRET}`;
  8. const token = `${header}.${encodedPayload}`;
  9. return encodeURIComponent(token);
  10. } catch (e) {
  11. console.error("Error encoding JWT:", e);
  12. return "";
  13. }
  14. };
  15. export const decodeJWT = <T = any>(token: string, isGuest: boolean = true): T | null => {
  16. try {
  17. if (!isGuest) {
  18. return { sessionToken: token } as unknown as T;
  19. }
  20. const decodedToken = decodeURIComponent(token);
  21. const parts = decodedToken.split(".");
  22. if (parts.length !== 2) {
  23. return null;
  24. }
  25. const payloadPart = parts[1];
  26. if (!payloadPart) return null;
  27. const jsonStr = decodeURIComponent(atob(payloadPart));
  28. return JSON.parse(jsonStr) as T;
  29. } catch (e) {
  30. console.warn("Error decoding JWT:", e);
  31. return null;
  32. }
  33. };