enzostvs HF Staff commited on
Commit
f1dc792
·
1 Parent(s): 1b0c25e

update how to get user

Browse files
Files changed (2) hide show
  1. app/api/auth/route.ts +1 -18
  2. hooks/useUser.ts +27 -4
app/api/auth/route.ts CHANGED
@@ -1,5 +1,4 @@
1
  import { NextRequest, NextResponse } from "next/server";
2
- import MY_TOKEN_KEY from "@/lib/get-cookie-name";
3
 
4
  export async function POST(req: NextRequest) {
5
  const body = await req.json();
@@ -71,10 +70,7 @@ export async function POST(req: NextRequest) {
71
  }
72
  const user = await userResponse.json();
73
 
74
- const cookieName = MY_TOKEN_KEY();
75
- const isProduction = process.env.NODE_ENV === "production";
76
-
77
- const nextResponse = NextResponse.json(
78
  {
79
  access_token: response.access_token,
80
  expires_in: response.expires_in,
@@ -87,17 +83,4 @@ export async function POST(req: NextRequest) {
87
  },
88
  }
89
  );
90
-
91
- // Set HTTP-only cookie
92
- const cookieOptions = [
93
- `${cookieName}=${response.access_token}`,
94
- `Max-Age=${response.expires_in || 3600}`, // Default 1 hour if not provided
95
- "Path=/deepsite",
96
- "HttpOnly",
97
- ...(isProduction ? ["Secure", "SameSite=None"] : ["SameSite=Lax"])
98
- ].join("; ");
99
-
100
- nextResponse.headers.set("Set-Cookie", cookieOptions);
101
-
102
- return nextResponse;
103
  }
 
1
  import { NextRequest, NextResponse } from "next/server";
 
2
 
3
  export async function POST(req: NextRequest) {
4
  const body = await req.json();
 
70
  }
71
  const user = await userResponse.json();
72
 
73
+ return NextResponse.json(
 
 
 
74
  {
75
  access_token: response.access_token,
76
  expires_in: response.expires_in,
 
83
  },
84
  }
85
  );
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  }
hooks/useUser.ts CHANGED
@@ -17,6 +17,7 @@ export const useUser = (initialData?: {
17
  const client = useQueryClient();
18
  const router = useRouter();
19
  const [currentRoute, setCurrentRoute, removeCurrentRoute] = useCookie("deepsite-currentRoute");
 
20
 
21
  const { data: { user, errCode } = { user: null, errCode: null }, isLoading } =
22
  useQuery({
@@ -68,11 +69,31 @@ export const useUser = (initialData?: {
68
  await api
69
  .post("/auth", { code })
70
  .then(async (res: any) => {
71
- if (res.data) {
72
- client.setQueryData(["user.me"], {
73
- user: res.data.user,
74
- errCode: null,
 
 
 
 
 
 
 
75
  });
 
 
 
 
 
 
 
 
 
 
 
 
 
76
  // if (currentRoute) {
77
  // router.push(currentRoute);
78
  // removeCurrentRoute();
@@ -93,12 +114,14 @@ export const useUser = (initialData?: {
93
  const logout = async () => {
94
  try {
95
  await api.post("/auth/logout");
 
96
  removeCurrentRoute();
97
  client.clear();
98
  toast.success("Logout successful");
99
  window.location.reload();
100
  } catch (error) {
101
  console.error("Logout error:", error);
 
102
  removeCurrentRoute();
103
  client.clear()
104
  toast.success("Logout successful");
 
17
  const client = useQueryClient();
18
  const router = useRouter();
19
  const [currentRoute, setCurrentRoute, removeCurrentRoute] = useCookie("deepsite-currentRoute");
20
+ const [token, setToken, removeToken] = useCookie("deepsite-auth-token");
21
 
22
  const { data: { user, errCode } = { user: null, errCode: null }, isLoading } =
23
  useQuery({
 
69
  await api
70
  .post("/auth", { code })
71
  .then(async (res: any) => {
72
+ if (res.data && res.data.access_token) {
73
+ // Set cookie using useCookie hook
74
+ const expiresIn = res.data.expires_in || 3600;
75
+ const expiresDate = new Date();
76
+ expiresDate.setTime(expiresDate.getTime() + expiresIn * 1000);
77
+
78
+ setToken(res.data.access_token, {
79
+ expires: expiresDate,
80
+ path: '/deepsite',
81
+ sameSite: 'lax',
82
+ secure: window.location.protocol === 'https:',
83
  });
84
+
85
+ // Refetch user data from /api/me
86
+ const meResponse = await api.get("/me");
87
+ if (meResponse.data) {
88
+ client.setQueryData(["user.me"], {
89
+ user: meResponse.data.user,
90
+ errCode: null,
91
+ });
92
+ if (meResponse.data.projects) {
93
+ setProjects(meResponse.data.projects);
94
+ }
95
+ }
96
+
97
  // if (currentRoute) {
98
  // router.push(currentRoute);
99
  // removeCurrentRoute();
 
114
  const logout = async () => {
115
  try {
116
  await api.post("/auth/logout");
117
+ removeToken();
118
  removeCurrentRoute();
119
  client.clear();
120
  toast.success("Logout successful");
121
  window.location.reload();
122
  } catch (error) {
123
  console.error("Logout error:", error);
124
+ removeToken();
125
  removeCurrentRoute();
126
  client.clear()
127
  toast.success("Logout successful");