@insforge/nextjs 0.6.9 → 0.7.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +119 -112
- package/dist/api.d.mts +1 -12
- package/dist/api.d.ts +1 -12
- package/dist/api.js +4 -60
- package/dist/api.js.map +1 -1
- package/dist/api.mjs +3 -58
- package/dist/api.mjs.map +1 -1
- package/dist/index.d.mts +1 -6
- package/dist/index.d.ts +1 -6
- package/dist/index.js +115 -86
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +115 -85
- package/dist/index.mjs.map +1 -1
- package/dist/middleware.js +17 -21
- package/dist/middleware.js.map +1 -1
- package/dist/middleware.mjs +17 -21
- package/dist/middleware.mjs.map +1 -1
- package/package.json +3 -2
package/dist/index.mjs
CHANGED
|
@@ -5,19 +5,6 @@ import { createContext, useContext, useEffect, useState, useCallback, useRef } f
|
|
|
5
5
|
import { createClient } from "@insforge/sdk";
|
|
6
6
|
import { jsx } from "react/jsx-runtime";
|
|
7
7
|
var InsforgeContext = createContext(void 0);
|
|
8
|
-
function getTokenFromSDK() {
|
|
9
|
-
console.log("[InsforgeProvider] Getting token from SDK");
|
|
10
|
-
if (typeof window === "undefined") return null;
|
|
11
|
-
console.log("[InsforgeProvider] Window:", window);
|
|
12
|
-
try {
|
|
13
|
-
const token = localStorage.getItem("insforge-auth-token");
|
|
14
|
-
console.log("[InsforgeProvider] Token:", token);
|
|
15
|
-
return token;
|
|
16
|
-
} catch (error) {
|
|
17
|
-
console.error("[InsforgeProvider] Error getting token from SDK:", error);
|
|
18
|
-
return null;
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
8
|
async function syncTokenToCookie(token) {
|
|
22
9
|
try {
|
|
23
10
|
const response = await fetch("/api/auth", {
|
|
@@ -52,7 +39,9 @@ function InsforgeProvider({
|
|
|
52
39
|
const [insforge] = useState(() => createClient({ baseUrl }));
|
|
53
40
|
const loadAuthState = useCallback(async () => {
|
|
54
41
|
try {
|
|
55
|
-
const
|
|
42
|
+
const sessionResult = insforge.auth.getCurrentSession();
|
|
43
|
+
const session2 = sessionResult.data?.session;
|
|
44
|
+
const token = session2?.accessToken || null;
|
|
56
45
|
if (!token) {
|
|
57
46
|
setUser(null);
|
|
58
47
|
setSession(null);
|
|
@@ -67,7 +56,6 @@ function InsforgeProvider({
|
|
|
67
56
|
try {
|
|
68
57
|
const cachedData = JSON.parse(cachedUserStr);
|
|
69
58
|
if (cachedData.user) {
|
|
70
|
-
console.log("[InsforgeProvider] Loading user from cache");
|
|
71
59
|
const userData = {
|
|
72
60
|
id: cachedData.user.id,
|
|
73
61
|
email: cachedData.user.email,
|
|
@@ -97,7 +85,6 @@ function InsforgeProvider({
|
|
|
97
85
|
}
|
|
98
86
|
const userResult = await insforge.auth.getCurrentUser();
|
|
99
87
|
if (userResult.data) {
|
|
100
|
-
console.log("[InsforgeProvider] User data refreshed from API");
|
|
101
88
|
const userData = {
|
|
102
89
|
id: userResult.data.user.id,
|
|
103
90
|
email: userResult.data.user.email,
|
|
@@ -158,28 +145,52 @@ function InsforgeProvider({
|
|
|
158
145
|
async (email, password) => {
|
|
159
146
|
const sdkResult = await insforge.auth.signInWithPassword({ email, password });
|
|
160
147
|
if (sdkResult.data) {
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
148
|
+
const userResult = await insforge.auth.getCurrentUser();
|
|
149
|
+
if (userResult.data) {
|
|
150
|
+
const userData = {
|
|
151
|
+
id: userResult.data.user.id,
|
|
152
|
+
email: userResult.data.user.email,
|
|
153
|
+
name: userResult.data.user.name || void 0,
|
|
154
|
+
createdAt: userResult.data.user.createdAt,
|
|
155
|
+
updatedAt: userResult.data.user.updatedAt,
|
|
156
|
+
...userResult.data.profile
|
|
157
|
+
// Include profile fields (nickname, avatar_url, etc.)
|
|
158
|
+
};
|
|
159
|
+
const sessionData = {
|
|
160
|
+
userId: userResult.data.user.id,
|
|
161
|
+
token: sdkResult.data.accessToken || "",
|
|
162
|
+
expiresAt: "",
|
|
163
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
164
|
+
};
|
|
165
|
+
setUser(userData);
|
|
166
|
+
setSession(sessionData);
|
|
167
|
+
localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
|
|
168
|
+
if (onAuthChange) {
|
|
169
|
+
onAuthChange(userData);
|
|
170
|
+
}
|
|
171
|
+
try {
|
|
172
|
+
await syncTokenToCookie(sdkResult.data.accessToken || "");
|
|
173
|
+
} catch (error) {
|
|
174
|
+
console.error("Please add /api/auth route to your server to sync token to cookie:", error);
|
|
175
|
+
}
|
|
176
|
+
} else {
|
|
177
|
+
const userData = {
|
|
178
|
+
id: sdkResult.data.user.id,
|
|
179
|
+
email: sdkResult.data.user.email,
|
|
180
|
+
name: sdkResult.data.user.name || void 0,
|
|
181
|
+
createdAt: sdkResult.data.user.createdAt,
|
|
182
|
+
updatedAt: sdkResult.data.user.updatedAt
|
|
183
|
+
};
|
|
184
|
+
setUser(userData);
|
|
185
|
+
setSession({
|
|
186
|
+
userId: sdkResult.data.user.id,
|
|
187
|
+
token: sdkResult.data.accessToken || "",
|
|
188
|
+
expiresAt: "",
|
|
189
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
190
|
+
});
|
|
191
|
+
if (onAuthChange) {
|
|
192
|
+
onAuthChange(userData);
|
|
193
|
+
}
|
|
183
194
|
}
|
|
184
195
|
} else {
|
|
185
196
|
const errorMessage = sdkResult.error?.message || "Invalid email or password";
|
|
@@ -192,27 +203,51 @@ function InsforgeProvider({
|
|
|
192
203
|
async (email, password) => {
|
|
193
204
|
const sdkResult = await insforge.auth.signUp({ email, password });
|
|
194
205
|
if (sdkResult.data) {
|
|
195
|
-
const
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
206
|
+
const userResult = await insforge.auth.getCurrentUser();
|
|
207
|
+
if (userResult.data) {
|
|
208
|
+
const userData = {
|
|
209
|
+
id: userResult.data.user.id,
|
|
210
|
+
email: userResult.data.user.email,
|
|
211
|
+
name: userResult.data.user.name || void 0,
|
|
212
|
+
createdAt: userResult.data.user.createdAt,
|
|
213
|
+
updatedAt: userResult.data.user.updatedAt,
|
|
214
|
+
...userResult.data.profile
|
|
215
|
+
// Include profile fields (nickname, avatar_url, etc.)
|
|
216
|
+
};
|
|
217
|
+
const sessionData = {
|
|
218
|
+
userId: userResult.data.user.id,
|
|
219
|
+
token: sdkResult.data.accessToken || "",
|
|
220
|
+
expiresAt: "",
|
|
221
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
222
|
+
};
|
|
223
|
+
setUser(userData);
|
|
224
|
+
setSession(sessionData);
|
|
225
|
+
localStorage.setItem("insforge-user-profile", JSON.stringify(userResult.data));
|
|
226
|
+
if (onAuthChange) {
|
|
227
|
+
onAuthChange(userData);
|
|
228
|
+
}
|
|
229
|
+
try {
|
|
230
|
+
await syncTokenToCookie(sdkResult.data.accessToken || "");
|
|
231
|
+
} catch (error) {
|
|
232
|
+
}
|
|
233
|
+
} else {
|
|
234
|
+
const userData = {
|
|
235
|
+
id: sdkResult.data.user.id,
|
|
236
|
+
email: sdkResult.data.user.email,
|
|
237
|
+
name: sdkResult.data.user.name || void 0,
|
|
238
|
+
createdAt: sdkResult.data.user.createdAt,
|
|
239
|
+
updatedAt: sdkResult.data.user.updatedAt
|
|
240
|
+
};
|
|
241
|
+
setUser(userData);
|
|
242
|
+
setSession({
|
|
243
|
+
userId: sdkResult.data.user.id,
|
|
244
|
+
token: sdkResult.data.accessToken || "",
|
|
245
|
+
expiresAt: "",
|
|
246
|
+
createdAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
247
|
+
});
|
|
248
|
+
if (onAuthChange) {
|
|
249
|
+
onAuthChange(userData);
|
|
250
|
+
}
|
|
216
251
|
}
|
|
217
252
|
} else {
|
|
218
253
|
const errorMessage = sdkResult.error?.message || "Sign up failed";
|
|
@@ -300,8 +335,13 @@ function useSession() {
|
|
|
300
335
|
return { session, isLoaded };
|
|
301
336
|
}
|
|
302
337
|
|
|
338
|
+
// src/components/SignIn.tsx
|
|
339
|
+
import { useState as useState4 } from "react";
|
|
340
|
+
import { createClient as createClient3 } from "@insforge/sdk";
|
|
341
|
+
|
|
303
342
|
// src/hooks/useOAuthProviders.ts
|
|
304
343
|
import { useState as useState2, useEffect as useEffect2 } from "react";
|
|
344
|
+
import { createClient as createClient2 } from "@insforge/sdk";
|
|
305
345
|
function useOAuthProviders() {
|
|
306
346
|
const { baseUrl } = useInsforge();
|
|
307
347
|
const [providers, setProviders] = useState2([]);
|
|
@@ -310,25 +350,21 @@ function useOAuthProviders() {
|
|
|
310
350
|
let mounted = true;
|
|
311
351
|
async function fetchProviders() {
|
|
312
352
|
try {
|
|
313
|
-
const
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
setProviders(result.data);
|
|
325
|
-
} else {
|
|
326
|
-
setProviders([]);
|
|
327
|
-
}
|
|
328
|
-
setIsLoaded(true);
|
|
353
|
+
const insforge = createClient2({ baseUrl });
|
|
354
|
+
const { data, error } = await insforge.auth.getOAuthProviders();
|
|
355
|
+
if (!mounted) return;
|
|
356
|
+
if (error) {
|
|
357
|
+
console.warn("[useOAuthProviders] Failed to fetch OAuth providers:", error);
|
|
358
|
+
setProviders([]);
|
|
359
|
+
} else if (data) {
|
|
360
|
+
const configuredProviders = data.filter((p) => p.isConfigured).map((p) => p.provider);
|
|
361
|
+
setProviders(configuredProviders);
|
|
362
|
+
} else {
|
|
363
|
+
setProviders([]);
|
|
329
364
|
}
|
|
365
|
+
setIsLoaded(true);
|
|
330
366
|
} catch (error) {
|
|
331
|
-
console.warn("[useOAuthProviders]
|
|
367
|
+
console.warn("[useOAuthProviders] Unexpected error:", error);
|
|
332
368
|
if (mounted) {
|
|
333
369
|
setProviders([]);
|
|
334
370
|
setIsLoaded(true);
|
|
@@ -343,10 +379,6 @@ function useOAuthProviders() {
|
|
|
343
379
|
return { providers, isLoaded };
|
|
344
380
|
}
|
|
345
381
|
|
|
346
|
-
// src/components/SignIn.tsx
|
|
347
|
-
import { useState as useState4 } from "react";
|
|
348
|
-
import { createClient as createClient2 } from "@insforge/sdk";
|
|
349
|
-
|
|
350
382
|
// src/components/auth/AuthBranding.tsx
|
|
351
383
|
import Link from "next/link";
|
|
352
384
|
import { jsx as jsx2, jsxs } from "react/jsx-runtime";
|
|
@@ -941,7 +973,7 @@ function SignIn({
|
|
|
941
973
|
const [error, setError] = useState4("");
|
|
942
974
|
const [loading, setLoading] = useState4(false);
|
|
943
975
|
const [oauthLoading, setOauthLoading] = useState4(null);
|
|
944
|
-
const insforge = useState4(() =>
|
|
976
|
+
const insforge = useState4(() => createClient3({ baseUrl }))[0];
|
|
945
977
|
async function handleSubmit(e) {
|
|
946
978
|
e.preventDefault();
|
|
947
979
|
setLoading(true);
|
|
@@ -970,7 +1002,6 @@ function SignIn({
|
|
|
970
1002
|
provider,
|
|
971
1003
|
redirectTo
|
|
972
1004
|
});
|
|
973
|
-
console.log("handleOAuth result", result);
|
|
974
1005
|
} catch (err) {
|
|
975
1006
|
const errorMessage = err.message || `${provider} sign in failed`;
|
|
976
1007
|
setError(errorMessage);
|
|
@@ -1035,7 +1066,7 @@ function SignIn({
|
|
|
1035
1066
|
|
|
1036
1067
|
// src/components/SignUp.tsx
|
|
1037
1068
|
import { useState as useState5 } from "react";
|
|
1038
|
-
import { createClient as
|
|
1069
|
+
import { createClient as createClient4 } from "@insforge/sdk";
|
|
1039
1070
|
import { Fragment as Fragment2, jsx as jsx17, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1040
1071
|
function SignUp({
|
|
1041
1072
|
afterSignUpUrl = "/",
|
|
@@ -1065,7 +1096,7 @@ function SignUp({
|
|
|
1065
1096
|
const [error, setError] = useState5("");
|
|
1066
1097
|
const [loading, setLoading] = useState5(false);
|
|
1067
1098
|
const [oauthLoading, setOauthLoading] = useState5(null);
|
|
1068
|
-
const insforge = useState5(() =>
|
|
1099
|
+
const insforge = useState5(() => createClient4({ baseUrl }))[0];
|
|
1069
1100
|
async function handleCredentialsSubmit(e) {
|
|
1070
1101
|
e.preventDefault();
|
|
1071
1102
|
setLoading(true);
|
|
@@ -1308,7 +1339,6 @@ export {
|
|
|
1308
1339
|
isProviderSupported,
|
|
1309
1340
|
useAuth,
|
|
1310
1341
|
useInsforge,
|
|
1311
|
-
useOAuthProviders,
|
|
1312
1342
|
useSession,
|
|
1313
1343
|
useUser,
|
|
1314
1344
|
validatePasswordStrength
|