@inai-dev/nextjs 0.1.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 +80 -0
- package/dist/index.cjs +65 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +3 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware.cjs +198 -0
- package/dist/middleware.cjs.map +1 -0
- package/dist/middleware.d.cts +14 -0
- package/dist/middleware.d.ts +14 -0
- package/dist/middleware.js +177 -0
- package/dist/middleware.js.map +1 -0
- package/dist/server.cjs +528 -0
- package/dist/server.cjs.map +1 -0
- package/dist/server.d.cts +81 -0
- package/dist/server.d.ts +81 -0
- package/dist/server.js +511 -0
- package/dist/server.js.map +1 -0
- package/package.json +63 -0
package/dist/server.cjs
ADDED
|
@@ -0,0 +1,528 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/server.ts
|
|
21
|
+
var server_exports = {};
|
|
22
|
+
__export(server_exports, {
|
|
23
|
+
auth: () => auth,
|
|
24
|
+
configureAuth: () => configureAuth,
|
|
25
|
+
createAuthRoutes: () => createAuthRoutes,
|
|
26
|
+
createPlatformAuthRoutes: () => createPlatformAuthRoutes,
|
|
27
|
+
currentUser: () => currentUser,
|
|
28
|
+
getAuthConfig: () => getAuthConfig
|
|
29
|
+
});
|
|
30
|
+
module.exports = __toCommonJS(server_exports);
|
|
31
|
+
var import_headers3 = require("next/headers");
|
|
32
|
+
var import_navigation = require("next/navigation");
|
|
33
|
+
var import_backend3 = require("@inai-dev/backend");
|
|
34
|
+
var import_shared5 = require("@inai-dev/shared");
|
|
35
|
+
|
|
36
|
+
// src/cookies.ts
|
|
37
|
+
var import_shared = require("@inai-dev/shared");
|
|
38
|
+
var import_shared2 = require("@inai-dev/shared");
|
|
39
|
+
var import_shared3 = require("@inai-dev/shared");
|
|
40
|
+
function setAuthCookies(cookieStore, tokens, user) {
|
|
41
|
+
const isProduction = process.env.NODE_ENV === "production";
|
|
42
|
+
const claims = (0, import_shared.decodeJWTPayload)(tokens.access_token);
|
|
43
|
+
const expiresAt = claims ? new Date(claims.exp * 1e3).toISOString() : new Date(Date.now() + tokens.expires_in * 1e3).toISOString();
|
|
44
|
+
cookieStore.set(import_shared.COOKIE_AUTH_TOKEN, tokens.access_token, {
|
|
45
|
+
httpOnly: true,
|
|
46
|
+
secure: isProduction,
|
|
47
|
+
sameSite: "lax",
|
|
48
|
+
path: "/",
|
|
49
|
+
maxAge: tokens.expires_in
|
|
50
|
+
});
|
|
51
|
+
cookieStore.set(import_shared.COOKIE_REFRESH_TOKEN, tokens.refresh_token, {
|
|
52
|
+
httpOnly: true,
|
|
53
|
+
secure: isProduction,
|
|
54
|
+
sameSite: "strict",
|
|
55
|
+
path: "/api/auth",
|
|
56
|
+
maxAge: 7 * 24 * 60 * 60
|
|
57
|
+
});
|
|
58
|
+
const sessionData = {
|
|
59
|
+
user,
|
|
60
|
+
expiresAt,
|
|
61
|
+
permissions: claims?.permissions ?? [],
|
|
62
|
+
orgId: claims?.org_id,
|
|
63
|
+
orgRole: claims?.org_role,
|
|
64
|
+
appId: claims?.app_id,
|
|
65
|
+
envId: claims?.env_id
|
|
66
|
+
};
|
|
67
|
+
cookieStore.set(import_shared.COOKIE_AUTH_SESSION, JSON.stringify(sessionData), {
|
|
68
|
+
httpOnly: false,
|
|
69
|
+
secure: isProduction,
|
|
70
|
+
sameSite: "lax",
|
|
71
|
+
path: "/",
|
|
72
|
+
maxAge: tokens.expires_in
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
function clearAuthCookies(cookieStore) {
|
|
76
|
+
const opts = { path: "/", maxAge: 0 };
|
|
77
|
+
cookieStore.set(import_shared.COOKIE_AUTH_TOKEN, "", opts);
|
|
78
|
+
cookieStore.set(import_shared.COOKIE_REFRESH_TOKEN, "", { ...opts, path: "/api/auth" });
|
|
79
|
+
cookieStore.set(import_shared.COOKIE_AUTH_SESSION, "", opts);
|
|
80
|
+
}
|
|
81
|
+
function getAuthTokenFromCookies(cookieStore) {
|
|
82
|
+
return cookieStore.get(import_shared.COOKIE_AUTH_TOKEN)?.value ?? null;
|
|
83
|
+
}
|
|
84
|
+
function getRefreshTokenFromCookies(cookieStore) {
|
|
85
|
+
return cookieStore.get(import_shared.COOKIE_REFRESH_TOKEN)?.value ?? null;
|
|
86
|
+
}
|
|
87
|
+
function getSessionFromCookies(cookieStore) {
|
|
88
|
+
const raw = cookieStore.get(import_shared.COOKIE_AUTH_SESSION)?.value;
|
|
89
|
+
if (!raw) return null;
|
|
90
|
+
try {
|
|
91
|
+
return JSON.parse(raw);
|
|
92
|
+
} catch {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
|
|
97
|
+
// src/config.ts
|
|
98
|
+
var defaults = {
|
|
99
|
+
signInUrl: "/login",
|
|
100
|
+
signUpUrl: "/register",
|
|
101
|
+
afterSignInUrl: "/",
|
|
102
|
+
afterSignOutUrl: "/login",
|
|
103
|
+
apiUrl: "",
|
|
104
|
+
publishableKey: ""
|
|
105
|
+
};
|
|
106
|
+
var userConfig = {};
|
|
107
|
+
function configureAuth(config) {
|
|
108
|
+
userConfig = config;
|
|
109
|
+
}
|
|
110
|
+
function getAuthConfig() {
|
|
111
|
+
return {
|
|
112
|
+
signInUrl: userConfig.signInUrl ?? defaults.signInUrl,
|
|
113
|
+
signUpUrl: userConfig.signUpUrl ?? defaults.signUpUrl,
|
|
114
|
+
afterSignInUrl: userConfig.afterSignInUrl ?? defaults.afterSignInUrl,
|
|
115
|
+
afterSignOutUrl: userConfig.afterSignOutUrl ?? defaults.afterSignOutUrl,
|
|
116
|
+
apiUrl: userConfig.apiUrl ?? process.env.INAI_API_URL ?? process.env.NEXT_PUBLIC_INAI_API_URL ?? defaults.apiUrl,
|
|
117
|
+
publishableKey: userConfig.publishableKey ?? process.env.NEXT_PUBLIC_INAI_PUBLISHABLE_KEY ?? defaults.publishableKey
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
// src/api-routes.ts
|
|
122
|
+
var import_headers = require("next/headers");
|
|
123
|
+
var import_server = require("next/server");
|
|
124
|
+
var import_backend = require("@inai-dev/backend");
|
|
125
|
+
function createAuthRoutes(config) {
|
|
126
|
+
const client = new import_backend.InAIAuthClient(config);
|
|
127
|
+
async function handleLogin(req) {
|
|
128
|
+
try {
|
|
129
|
+
const body = await req.json();
|
|
130
|
+
const result = await client.login({
|
|
131
|
+
email: body.email,
|
|
132
|
+
password: body.password
|
|
133
|
+
});
|
|
134
|
+
if (result.mfa_required) {
|
|
135
|
+
return import_server.NextResponse.json({
|
|
136
|
+
mfa_required: true,
|
|
137
|
+
mfa_token: result.mfa_token
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const tokens = result;
|
|
141
|
+
const loginUser = result.user;
|
|
142
|
+
const user = loginUser ?? (await client.getMe(tokens.access_token)).data;
|
|
143
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
144
|
+
setAuthCookies(cookieStore, tokens, user);
|
|
145
|
+
return import_server.NextResponse.json({ user });
|
|
146
|
+
} catch (err) {
|
|
147
|
+
const message = err instanceof Error ? err.message : "Login failed";
|
|
148
|
+
return import_server.NextResponse.json({ error: message }, { status: 401 });
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async function handleMFAChallenge(req) {
|
|
152
|
+
try {
|
|
153
|
+
const body = await req.json();
|
|
154
|
+
const tokens = await client.mfaChallenge({
|
|
155
|
+
mfa_token: body.mfa_token,
|
|
156
|
+
code: body.code
|
|
157
|
+
});
|
|
158
|
+
const { data: user } = await client.getMe(tokens.access_token);
|
|
159
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
160
|
+
setAuthCookies(cookieStore, tokens, user);
|
|
161
|
+
return import_server.NextResponse.json({ user });
|
|
162
|
+
} catch (err) {
|
|
163
|
+
const message = err instanceof Error ? err.message : "MFA verification failed";
|
|
164
|
+
return import_server.NextResponse.json({ error: message }, { status: 401 });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
async function handleRefresh() {
|
|
168
|
+
try {
|
|
169
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
170
|
+
const refreshToken = getRefreshTokenFromCookies(cookieStore);
|
|
171
|
+
if (!refreshToken) {
|
|
172
|
+
clearAuthCookies(cookieStore);
|
|
173
|
+
return import_server.NextResponse.json(
|
|
174
|
+
{ error: "No refresh token" },
|
|
175
|
+
{ status: 401 }
|
|
176
|
+
);
|
|
177
|
+
}
|
|
178
|
+
const tokens = await client.refresh(refreshToken);
|
|
179
|
+
const { data: user } = await client.getMe(tokens.access_token);
|
|
180
|
+
setAuthCookies(cookieStore, tokens, user);
|
|
181
|
+
return import_server.NextResponse.json({ user });
|
|
182
|
+
} catch {
|
|
183
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
184
|
+
clearAuthCookies(cookieStore);
|
|
185
|
+
return import_server.NextResponse.json(
|
|
186
|
+
{ error: "Refresh failed" },
|
|
187
|
+
{ status: 401 }
|
|
188
|
+
);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
async function handleRegister(req) {
|
|
192
|
+
try {
|
|
193
|
+
const body = await req.json();
|
|
194
|
+
const result = await client.register({
|
|
195
|
+
email: body.email,
|
|
196
|
+
password: body.password,
|
|
197
|
+
firstName: body.firstName,
|
|
198
|
+
lastName: body.lastName
|
|
199
|
+
});
|
|
200
|
+
if (!result.access_token) {
|
|
201
|
+
return import_server.NextResponse.json({
|
|
202
|
+
needs_email_verification: true,
|
|
203
|
+
user: result.user
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
const tokens = result;
|
|
207
|
+
const loginUser = result.user;
|
|
208
|
+
const user = loginUser ?? (await client.getMe(tokens.access_token)).data;
|
|
209
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
210
|
+
setAuthCookies(cookieStore, tokens, user);
|
|
211
|
+
return import_server.NextResponse.json({ user });
|
|
212
|
+
} catch (err) {
|
|
213
|
+
const message = err instanceof Error ? err.message : "Registration failed";
|
|
214
|
+
return import_server.NextResponse.json({ error: message }, { status: 400 });
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
async function handleLogout() {
|
|
218
|
+
try {
|
|
219
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
220
|
+
const refreshToken = getRefreshTokenFromCookies(cookieStore);
|
|
221
|
+
if (refreshToken) {
|
|
222
|
+
await client.logout(refreshToken).catch(() => {
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
clearAuthCookies(cookieStore);
|
|
226
|
+
return import_server.NextResponse.json({ success: true });
|
|
227
|
+
} catch {
|
|
228
|
+
const cookieStore = await (0, import_headers.cookies)();
|
|
229
|
+
clearAuthCookies(cookieStore);
|
|
230
|
+
return import_server.NextResponse.json({ success: true });
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
async function handler(req, context) {
|
|
234
|
+
const params = await context.params;
|
|
235
|
+
const path = params.inai?.join("/") ?? "";
|
|
236
|
+
if (req.method === "POST") {
|
|
237
|
+
switch (path) {
|
|
238
|
+
case "login":
|
|
239
|
+
return handleLogin(req);
|
|
240
|
+
case "register":
|
|
241
|
+
return handleRegister(req);
|
|
242
|
+
case "mfa-challenge":
|
|
243
|
+
return handleMFAChallenge(req);
|
|
244
|
+
case "refresh":
|
|
245
|
+
return handleRefresh();
|
|
246
|
+
case "logout":
|
|
247
|
+
return handleLogout();
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
return import_server.NextResponse.json({ error: "Not found" }, { status: 404 });
|
|
251
|
+
}
|
|
252
|
+
return {
|
|
253
|
+
GET: handler,
|
|
254
|
+
POST: handler
|
|
255
|
+
};
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// src/platform-api-routes.ts
|
|
259
|
+
var import_headers2 = require("next/headers");
|
|
260
|
+
var import_server2 = require("next/server");
|
|
261
|
+
var import_backend2 = require("@inai-dev/backend");
|
|
262
|
+
var import_shared4 = require("@inai-dev/shared");
|
|
263
|
+
function createPlatformAuthRoutes(config) {
|
|
264
|
+
const client = new import_backend2.InAIAuthClient(config);
|
|
265
|
+
const isProduction = process.env.NODE_ENV === "production";
|
|
266
|
+
function setPlatformCookies(cookieStore, tokens, user) {
|
|
267
|
+
cookieStore.set(import_shared4.COOKIE_AUTH_TOKEN, tokens.access_token, {
|
|
268
|
+
httpOnly: true,
|
|
269
|
+
secure: isProduction,
|
|
270
|
+
sameSite: "lax",
|
|
271
|
+
path: "/",
|
|
272
|
+
maxAge: tokens.expires_in
|
|
273
|
+
});
|
|
274
|
+
cookieStore.set(import_shared4.COOKIE_REFRESH_TOKEN, tokens.refresh_token, {
|
|
275
|
+
httpOnly: true,
|
|
276
|
+
secure: isProduction,
|
|
277
|
+
sameSite: "strict",
|
|
278
|
+
path: "/api/auth",
|
|
279
|
+
maxAge: 7 * 24 * 60 * 60
|
|
280
|
+
});
|
|
281
|
+
if (user) {
|
|
282
|
+
const expiresAt = Date.now() + tokens.expires_in * 1e3;
|
|
283
|
+
cookieStore.set(
|
|
284
|
+
import_shared4.COOKIE_AUTH_SESSION,
|
|
285
|
+
JSON.stringify({ user, expiresAt }),
|
|
286
|
+
{
|
|
287
|
+
httpOnly: false,
|
|
288
|
+
secure: isProduction,
|
|
289
|
+
sameSite: "lax",
|
|
290
|
+
path: "/",
|
|
291
|
+
maxAge: tokens.expires_in
|
|
292
|
+
}
|
|
293
|
+
);
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
function clearPlatformCookies(cookieStore) {
|
|
297
|
+
cookieStore.set(import_shared4.COOKIE_AUTH_TOKEN, "", { path: "/", maxAge: 0 });
|
|
298
|
+
cookieStore.set(import_shared4.COOKIE_REFRESH_TOKEN, "", {
|
|
299
|
+
path: "/api/auth",
|
|
300
|
+
maxAge: 0
|
|
301
|
+
});
|
|
302
|
+
cookieStore.set(import_shared4.COOKIE_AUTH_SESSION, "", { path: "/", maxAge: 0 });
|
|
303
|
+
}
|
|
304
|
+
async function handleLogin(req) {
|
|
305
|
+
try {
|
|
306
|
+
const body = await req.json();
|
|
307
|
+
const result = await client.platformLogin({
|
|
308
|
+
email: body.email,
|
|
309
|
+
password: body.password
|
|
310
|
+
});
|
|
311
|
+
if (result.mfa_required) {
|
|
312
|
+
return import_server2.NextResponse.json({
|
|
313
|
+
mfa_required: true,
|
|
314
|
+
mfa_token: result.mfa_token
|
|
315
|
+
});
|
|
316
|
+
}
|
|
317
|
+
const tokens = result;
|
|
318
|
+
const user = result.user;
|
|
319
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
320
|
+
setPlatformCookies(cookieStore, tokens, user);
|
|
321
|
+
return import_server2.NextResponse.json({ user });
|
|
322
|
+
} catch (err) {
|
|
323
|
+
const message = err instanceof Error ? err.message : "Login failed";
|
|
324
|
+
return import_server2.NextResponse.json({ error: message }, { status: 401 });
|
|
325
|
+
}
|
|
326
|
+
}
|
|
327
|
+
async function handleMFAChallenge(req) {
|
|
328
|
+
try {
|
|
329
|
+
const body = await req.json();
|
|
330
|
+
const result = await client.platformMfaChallenge({
|
|
331
|
+
mfa_token: body.mfa_token,
|
|
332
|
+
code: body.code
|
|
333
|
+
});
|
|
334
|
+
const tokens = result;
|
|
335
|
+
const user = result.user;
|
|
336
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
337
|
+
setPlatformCookies(cookieStore, tokens, user);
|
|
338
|
+
return import_server2.NextResponse.json({ user });
|
|
339
|
+
} catch (err) {
|
|
340
|
+
const message = err instanceof Error ? err.message : "MFA verification failed";
|
|
341
|
+
return import_server2.NextResponse.json({ error: message }, { status: 401 });
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
async function handleRefresh() {
|
|
345
|
+
try {
|
|
346
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
347
|
+
const refreshToken = cookieStore.get(import_shared4.COOKIE_REFRESH_TOKEN)?.value;
|
|
348
|
+
if (!refreshToken) {
|
|
349
|
+
clearPlatformCookies(cookieStore);
|
|
350
|
+
return import_server2.NextResponse.json(
|
|
351
|
+
{ error: "No refresh token" },
|
|
352
|
+
{ status: 401 }
|
|
353
|
+
);
|
|
354
|
+
}
|
|
355
|
+
const tokens = await client.platformRefresh(refreshToken);
|
|
356
|
+
const { data: user } = await client.platformGetMe(
|
|
357
|
+
tokens.access_token
|
|
358
|
+
);
|
|
359
|
+
setPlatformCookies(cookieStore, tokens, user);
|
|
360
|
+
return import_server2.NextResponse.json({ user });
|
|
361
|
+
} catch {
|
|
362
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
363
|
+
clearPlatformCookies(cookieStore);
|
|
364
|
+
return import_server2.NextResponse.json(
|
|
365
|
+
{ error: "Refresh failed" },
|
|
366
|
+
{ status: 401 }
|
|
367
|
+
);
|
|
368
|
+
}
|
|
369
|
+
}
|
|
370
|
+
async function handleLogout() {
|
|
371
|
+
try {
|
|
372
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
373
|
+
const refreshToken = cookieStore.get(import_shared4.COOKIE_REFRESH_TOKEN)?.value;
|
|
374
|
+
if (refreshToken) {
|
|
375
|
+
await client.platformLogout(refreshToken).catch(() => {
|
|
376
|
+
});
|
|
377
|
+
}
|
|
378
|
+
clearPlatformCookies(cookieStore);
|
|
379
|
+
return import_server2.NextResponse.json({ success: true });
|
|
380
|
+
} catch {
|
|
381
|
+
const cookieStore = await (0, import_headers2.cookies)();
|
|
382
|
+
clearPlatformCookies(cookieStore);
|
|
383
|
+
return import_server2.NextResponse.json({ success: true });
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
async function handler(req, context) {
|
|
387
|
+
const params = await context.params;
|
|
388
|
+
const path = params.inai?.join("/") ?? "";
|
|
389
|
+
if (req.method === "POST") {
|
|
390
|
+
switch (path) {
|
|
391
|
+
case "login":
|
|
392
|
+
return handleLogin(req);
|
|
393
|
+
case "mfa-challenge":
|
|
394
|
+
return handleMFAChallenge(req);
|
|
395
|
+
case "refresh":
|
|
396
|
+
return handleRefresh();
|
|
397
|
+
case "logout":
|
|
398
|
+
return handleLogout();
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
return import_server2.NextResponse.json({ error: "Not found" }, { status: 404 });
|
|
402
|
+
}
|
|
403
|
+
return {
|
|
404
|
+
GET: handler,
|
|
405
|
+
POST: handler
|
|
406
|
+
};
|
|
407
|
+
}
|
|
408
|
+
|
|
409
|
+
// src/server.ts
|
|
410
|
+
async function auth() {
|
|
411
|
+
const cookieStore = await (0, import_headers3.cookies)();
|
|
412
|
+
const token = getAuthTokenFromCookies(cookieStore);
|
|
413
|
+
const config = getAuthConfig();
|
|
414
|
+
function redirectToSignIn(opts) {
|
|
415
|
+
const returnTo = opts?.returnTo;
|
|
416
|
+
const url = returnTo ? `${config.signInUrl}?returnTo=${encodeURIComponent(returnTo)}` : config.signInUrl;
|
|
417
|
+
(0, import_navigation.redirect)(url);
|
|
418
|
+
}
|
|
419
|
+
if (!token || (0, import_shared5.isTokenExpired)(token)) {
|
|
420
|
+
return {
|
|
421
|
+
userId: null,
|
|
422
|
+
tenantId: null,
|
|
423
|
+
appId: null,
|
|
424
|
+
envId: null,
|
|
425
|
+
orgId: null,
|
|
426
|
+
orgRole: null,
|
|
427
|
+
sessionId: null,
|
|
428
|
+
getToken: async () => null,
|
|
429
|
+
has: () => false,
|
|
430
|
+
protect: () => {
|
|
431
|
+
redirectToSignIn();
|
|
432
|
+
},
|
|
433
|
+
redirectToSignIn
|
|
434
|
+
};
|
|
435
|
+
}
|
|
436
|
+
const claims = (0, import_shared5.getClaimsFromToken)(token);
|
|
437
|
+
if (!claims) {
|
|
438
|
+
return {
|
|
439
|
+
userId: null,
|
|
440
|
+
tenantId: null,
|
|
441
|
+
appId: null,
|
|
442
|
+
envId: null,
|
|
443
|
+
orgId: null,
|
|
444
|
+
orgRole: null,
|
|
445
|
+
sessionId: null,
|
|
446
|
+
getToken: async () => null,
|
|
447
|
+
has: () => false,
|
|
448
|
+
protect: () => {
|
|
449
|
+
redirectToSignIn();
|
|
450
|
+
},
|
|
451
|
+
redirectToSignIn
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
const roles = claims.roles ?? [];
|
|
455
|
+
const permissions = claims.permissions ?? [];
|
|
456
|
+
const has = (params) => {
|
|
457
|
+
if (params.role && roles.includes(params.role)) return true;
|
|
458
|
+
if (params.permission && permissions.includes(params.permission))
|
|
459
|
+
return true;
|
|
460
|
+
return false;
|
|
461
|
+
};
|
|
462
|
+
const protectedObj = {
|
|
463
|
+
userId: claims.sub,
|
|
464
|
+
tenantId: claims.tenant_id,
|
|
465
|
+
appId: claims.app_id ?? null,
|
|
466
|
+
envId: claims.env_id ?? null,
|
|
467
|
+
orgId: claims.org_id ?? null,
|
|
468
|
+
orgRole: claims.org_role ?? null,
|
|
469
|
+
sessionId: null,
|
|
470
|
+
isSignedIn: true,
|
|
471
|
+
getToken: async () => token,
|
|
472
|
+
has
|
|
473
|
+
};
|
|
474
|
+
return {
|
|
475
|
+
userId: claims.sub,
|
|
476
|
+
tenantId: claims.tenant_id,
|
|
477
|
+
appId: claims.app_id ?? null,
|
|
478
|
+
envId: claims.env_id ?? null,
|
|
479
|
+
orgId: claims.org_id ?? null,
|
|
480
|
+
orgRole: claims.org_role ?? null,
|
|
481
|
+
sessionId: null,
|
|
482
|
+
getToken: async () => token,
|
|
483
|
+
has,
|
|
484
|
+
protect: (params) => {
|
|
485
|
+
if (params?.role || params?.permission) {
|
|
486
|
+
if (!has({ role: params.role, permission: params.permission })) {
|
|
487
|
+
(0, import_navigation.redirect)(params.redirectTo ?? "/unauthorized");
|
|
488
|
+
}
|
|
489
|
+
}
|
|
490
|
+
return protectedObj;
|
|
491
|
+
},
|
|
492
|
+
redirectToSignIn
|
|
493
|
+
};
|
|
494
|
+
}
|
|
495
|
+
async function currentUser(opts) {
|
|
496
|
+
const cookieStore = await (0, import_headers3.cookies)();
|
|
497
|
+
if (opts?.fresh) {
|
|
498
|
+
const token = getAuthTokenFromCookies(cookieStore);
|
|
499
|
+
if (!token || (0, import_shared5.isTokenExpired)(token)) return null;
|
|
500
|
+
const config = getAuthConfig();
|
|
501
|
+
if (!config.apiUrl || !config.publishableKey) {
|
|
502
|
+
const session2 = getSessionFromCookies(cookieStore);
|
|
503
|
+
return session2?.user ?? null;
|
|
504
|
+
}
|
|
505
|
+
const client = new import_backend3.InAIAuthClient({
|
|
506
|
+
apiUrl: config.apiUrl,
|
|
507
|
+
publishableKey: config.publishableKey
|
|
508
|
+
});
|
|
509
|
+
try {
|
|
510
|
+
const { data } = await client.getMe(token);
|
|
511
|
+
return data;
|
|
512
|
+
} catch {
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
}
|
|
516
|
+
const session = getSessionFromCookies(cookieStore);
|
|
517
|
+
return session?.user ?? null;
|
|
518
|
+
}
|
|
519
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
520
|
+
0 && (module.exports = {
|
|
521
|
+
auth,
|
|
522
|
+
configureAuth,
|
|
523
|
+
createAuthRoutes,
|
|
524
|
+
createPlatformAuthRoutes,
|
|
525
|
+
currentUser,
|
|
526
|
+
getAuthConfig
|
|
527
|
+
});
|
|
528
|
+
//# sourceMappingURL=server.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/server.ts","../src/cookies.ts","../src/config.ts","../src/api-routes.ts","../src/platform-api-routes.ts"],"sourcesContent":["import { cookies } from \"next/headers\";\nimport { redirect } from \"next/navigation\";\nimport type {\n AuthObject,\n ServerAuthObject,\n ProtectedAuthObject,\n UserResource,\n} from \"@inai-dev/types\";\nimport { InAIAuthClient } from \"@inai-dev/backend\";\nimport { isTokenExpired, getClaimsFromToken } from \"@inai-dev/shared\";\nimport {\n getAuthTokenFromCookies,\n getSessionFromCookies,\n} from \"./cookies\";\nimport { getAuthConfig } from \"./config\";\n\nexport { createAuthRoutes } from \"./api-routes\";\nexport { createPlatformAuthRoutes } from \"./platform-api-routes\";\nexport { configureAuth, getAuthConfig } from \"./config\";\n\nexport async function auth(): Promise<ServerAuthObject> {\n const cookieStore = await cookies();\n const token = getAuthTokenFromCookies(cookieStore);\n const config = getAuthConfig();\n\n function redirectToSignIn(opts?: { returnTo?: string }): never {\n const returnTo = opts?.returnTo;\n const url = returnTo\n ? `${config.signInUrl}?returnTo=${encodeURIComponent(returnTo)}`\n : config.signInUrl;\n redirect(url);\n }\n\n if (!token || isTokenExpired(token)) {\n return {\n userId: null,\n tenantId: null,\n appId: null,\n envId: null,\n orgId: null,\n orgRole: null,\n sessionId: null,\n getToken: async () => null,\n has: () => false,\n protect: () => {\n redirectToSignIn();\n },\n redirectToSignIn,\n };\n }\n\n const claims = getClaimsFromToken(token);\n if (!claims) {\n return {\n userId: null,\n tenantId: null,\n appId: null,\n envId: null,\n orgId: null,\n orgRole: null,\n sessionId: null,\n getToken: async () => null,\n has: () => false,\n protect: () => {\n redirectToSignIn();\n },\n redirectToSignIn,\n };\n }\n\n const roles = claims.roles ?? [];\n const permissions = claims.permissions ?? [];\n\n const has = (params: { role?: string; permission?: string }) => {\n if (params.role && roles.includes(params.role)) return true;\n if (params.permission && permissions.includes(params.permission))\n return true;\n return false;\n };\n\n const protectedObj: ProtectedAuthObject = {\n userId: claims.sub,\n tenantId: claims.tenant_id,\n appId: claims.app_id ?? null,\n envId: claims.env_id ?? null,\n orgId: claims.org_id ?? null,\n orgRole: claims.org_role ?? null,\n sessionId: null,\n isSignedIn: true,\n getToken: async () => token,\n has,\n };\n\n return {\n userId: claims.sub,\n tenantId: claims.tenant_id,\n appId: claims.app_id ?? null,\n envId: claims.env_id ?? null,\n orgId: claims.org_id ?? null,\n orgRole: claims.org_role ?? null,\n sessionId: null,\n getToken: async () => token,\n has,\n protect: (params?: {\n role?: string;\n permission?: string;\n redirectTo?: string;\n }) => {\n if (params?.role || params?.permission) {\n if (!has({ role: params.role, permission: params.permission })) {\n redirect(params.redirectTo ?? \"/unauthorized\");\n }\n }\n return protectedObj;\n },\n redirectToSignIn,\n };\n}\n\nexport async function currentUser(\n opts?: { fresh?: boolean },\n): Promise<UserResource | null> {\n const cookieStore = await cookies();\n\n if (opts?.fresh) {\n const token = getAuthTokenFromCookies(cookieStore);\n if (!token || isTokenExpired(token)) return null;\n\n const config = getAuthConfig();\n if (!config.apiUrl || !config.publishableKey) {\n const session = getSessionFromCookies(cookieStore);\n return session?.user ?? null;\n }\n\n const client = new InAIAuthClient({\n apiUrl: config.apiUrl,\n publishableKey: config.publishableKey,\n });\n try {\n const { data } = await client.getMe(token);\n return data;\n } catch {\n return null;\n }\n }\n\n const session = getSessionFromCookies(cookieStore);\n return session?.user ?? null;\n}\n","import type { UserResource, JWTClaims, TokenPair } from \"@inai-dev/types\";\nimport {\n COOKIE_AUTH_TOKEN,\n COOKIE_REFRESH_TOKEN,\n COOKIE_AUTH_SESSION,\n decodeJWTPayload,\n} from \"@inai-dev/shared\";\n\nexport {\n COOKIE_AUTH_TOKEN,\n COOKIE_REFRESH_TOKEN,\n COOKIE_AUTH_SESSION,\n} from \"@inai-dev/shared\";\n\nexport { isTokenExpired, getClaimsFromToken } from \"@inai-dev/shared\";\n\ninterface CookieStore {\n get(name: string): { value: string } | undefined;\n set(name: string, value: string, options?: Record<string, unknown>): void;\n}\n\ninterface SessionData {\n user: UserResource;\n expiresAt: string;\n permissions?: string[];\n orgId?: string;\n orgRole?: string;\n appId?: string;\n envId?: string;\n}\n\nexport function setAuthCookies(\n cookieStore: CookieStore,\n tokens: TokenPair,\n user: UserResource,\n): void {\n const isProduction = process.env.NODE_ENV === \"production\";\n const claims = decodeJWTPayload(tokens.access_token);\n const expiresAt = claims\n ? new Date(claims.exp * 1000).toISOString()\n : new Date(Date.now() + tokens.expires_in * 1000).toISOString();\n\n cookieStore.set(COOKIE_AUTH_TOKEN, tokens.access_token, {\n httpOnly: true,\n secure: isProduction,\n sameSite: \"lax\",\n path: \"/\",\n maxAge: tokens.expires_in,\n });\n\n cookieStore.set(COOKIE_REFRESH_TOKEN, tokens.refresh_token, {\n httpOnly: true,\n secure: isProduction,\n sameSite: \"strict\",\n path: \"/api/auth\",\n maxAge: 7 * 24 * 60 * 60,\n });\n\n const sessionData: SessionData = {\n user,\n expiresAt,\n permissions: claims?.permissions ?? [],\n orgId: claims?.org_id,\n orgRole: claims?.org_role,\n appId: claims?.app_id,\n envId: claims?.env_id,\n };\n cookieStore.set(COOKIE_AUTH_SESSION, JSON.stringify(sessionData), {\n httpOnly: false,\n secure: isProduction,\n sameSite: \"lax\",\n path: \"/\",\n maxAge: tokens.expires_in,\n });\n}\n\nexport function clearAuthCookies(\n cookieStore: CookieStore,\n): void {\n const opts = { path: \"/\", maxAge: 0 };\n cookieStore.set(COOKIE_AUTH_TOKEN, \"\", opts);\n cookieStore.set(COOKIE_REFRESH_TOKEN, \"\", { ...opts, path: \"/api/auth\" });\n cookieStore.set(COOKIE_AUTH_SESSION, \"\", opts);\n}\n\nexport function getAuthTokenFromCookies(\n cookieStore: CookieStore,\n): string | null {\n return cookieStore.get(COOKIE_AUTH_TOKEN)?.value ?? null;\n}\n\nexport function getRefreshTokenFromCookies(\n cookieStore: CookieStore,\n): string | null {\n return cookieStore.get(COOKIE_REFRESH_TOKEN)?.value ?? null;\n}\n\nexport function getSessionFromCookies(\n cookieStore: CookieStore,\n): SessionData | null {\n const raw = cookieStore.get(COOKIE_AUTH_SESSION)?.value;\n if (!raw) return null;\n try {\n return JSON.parse(raw) as SessionData;\n } catch {\n return null;\n }\n}\n","import type { InAIAuthSDKConfig } from \"@inai-dev/types\";\n\ntype ResolvedConfig = Required<InAIAuthSDKConfig>;\n\nconst defaults: ResolvedConfig = {\n signInUrl: \"/login\",\n signUpUrl: \"/register\",\n afterSignInUrl: \"/\",\n afterSignOutUrl: \"/login\",\n apiUrl: \"\",\n publishableKey: \"\",\n};\n\nlet userConfig: Partial<InAIAuthSDKConfig> = {};\n\nexport function configureAuth(config: InAIAuthSDKConfig): void {\n userConfig = config;\n}\n\nexport function getAuthConfig(): ResolvedConfig {\n return {\n signInUrl: userConfig.signInUrl ?? defaults.signInUrl,\n signUpUrl: userConfig.signUpUrl ?? defaults.signUpUrl,\n afterSignInUrl: userConfig.afterSignInUrl ?? defaults.afterSignInUrl,\n afterSignOutUrl: userConfig.afterSignOutUrl ?? defaults.afterSignOutUrl,\n apiUrl:\n userConfig.apiUrl ??\n process.env.INAI_API_URL ??\n process.env.NEXT_PUBLIC_INAI_API_URL ??\n defaults.apiUrl,\n publishableKey:\n userConfig.publishableKey ??\n process.env.NEXT_PUBLIC_INAI_PUBLISHABLE_KEY ??\n defaults.publishableKey,\n };\n}\n","import { cookies } from \"next/headers\";\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\nimport { InAIAuthClient } from \"@inai-dev/backend\";\nimport type {\n InAIAuthConfig,\n TokenPair,\n UserResource,\n LoginResult,\n} from \"@inai-dev/types\";\nimport {\n setAuthCookies,\n clearAuthCookies,\n getRefreshTokenFromCookies,\n} from \"./cookies\";\n\nexport function createAuthRoutes(config: InAIAuthConfig) {\n const client = new InAIAuthClient(config);\n\n async function handleLogin(req: NextRequest) {\n try {\n const body = (await req.json()) as Record<string, string>;\n const result = (await client.login({\n email: body.email,\n password: body.password,\n })) as LoginResult & { user?: UserResource };\n\n if (result.mfa_required) {\n return NextResponse.json({\n mfa_required: true,\n mfa_token: result.mfa_token,\n });\n }\n\n const tokens = result as TokenPair;\n const loginUser = (result as { user?: UserResource }).user;\n const user =\n loginUser ?? (await client.getMe(tokens.access_token)).data;\n const cookieStore = await cookies();\n setAuthCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Login failed\";\n return NextResponse.json({ error: message }, { status: 401 });\n }\n }\n\n async function handleMFAChallenge(req: NextRequest) {\n try {\n const body = (await req.json()) as Record<string, string>;\n const tokens = await client.mfaChallenge({\n mfa_token: body.mfa_token,\n code: body.code,\n });\n\n const { data: user } = await client.getMe(tokens.access_token);\n const cookieStore = await cookies();\n setAuthCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch (err) {\n const message =\n err instanceof Error ? err.message : \"MFA verification failed\";\n return NextResponse.json({ error: message }, { status: 401 });\n }\n }\n\n async function handleRefresh() {\n try {\n const cookieStore = await cookies();\n const refreshToken = getRefreshTokenFromCookies(cookieStore);\n\n if (!refreshToken) {\n clearAuthCookies(cookieStore);\n return NextResponse.json(\n { error: \"No refresh token\" },\n { status: 401 },\n );\n }\n\n const tokens = await client.refresh(refreshToken);\n const { data: user } = await client.getMe(tokens.access_token);\n setAuthCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch {\n const cookieStore = await cookies();\n clearAuthCookies(cookieStore);\n return NextResponse.json(\n { error: \"Refresh failed\" },\n { status: 401 },\n );\n }\n }\n\n async function handleRegister(req: NextRequest) {\n try {\n const body = (await req.json()) as Record<string, string>;\n const result = await client.register({\n email: body.email,\n password: body.password,\n firstName: body.firstName,\n lastName: body.lastName,\n });\n\n if (!result.access_token) {\n return NextResponse.json({\n needs_email_verification: true,\n user: result.user,\n });\n }\n\n const tokens = result as TokenPair;\n const loginUser = result.user;\n const user =\n loginUser ?? (await client.getMe(tokens.access_token)).data;\n const cookieStore = await cookies();\n setAuthCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch (err) {\n const message =\n err instanceof Error ? err.message : \"Registration failed\";\n return NextResponse.json({ error: message }, { status: 400 });\n }\n }\n\n async function handleLogout() {\n try {\n const cookieStore = await cookies();\n const refreshToken = getRefreshTokenFromCookies(cookieStore);\n if (refreshToken) {\n await client.logout(refreshToken).catch(() => {});\n }\n clearAuthCookies(cookieStore);\n return NextResponse.json({ success: true });\n } catch {\n const cookieStore = await cookies();\n clearAuthCookies(cookieStore);\n return NextResponse.json({ success: true });\n }\n }\n\n async function handler(\n req: NextRequest,\n context: { params: Promise<{ inai: string[] }> },\n ) {\n const params = await context.params;\n const path = params.inai?.join(\"/\") ?? \"\";\n\n if (req.method === \"POST\") {\n switch (path) {\n case \"login\":\n return handleLogin(req);\n case \"register\":\n return handleRegister(req);\n case \"mfa-challenge\":\n return handleMFAChallenge(req);\n case \"refresh\":\n return handleRefresh();\n case \"logout\":\n return handleLogout();\n }\n }\n\n return NextResponse.json({ error: \"Not found\" }, { status: 404 });\n }\n\n return {\n GET: handler,\n POST: handler,\n };\n}\n","import { cookies } from \"next/headers\";\nimport { NextResponse } from \"next/server\";\nimport type { NextRequest } from \"next/server\";\nimport { InAIAuthClient } from \"@inai-dev/backend\";\nimport type { InAIAuthConfig, TokenPair, PlatformUserResource } from \"@inai-dev/types\";\nimport {\n COOKIE_AUTH_TOKEN,\n COOKIE_AUTH_SESSION,\n COOKIE_REFRESH_TOKEN,\n} from \"@inai-dev/shared\";\n\nexport function createPlatformAuthRoutes(config: InAIAuthConfig) {\n const client = new InAIAuthClient(config);\n const isProduction = process.env.NODE_ENV === \"production\";\n\n function setPlatformCookies(\n cookieStore: Awaited<ReturnType<typeof cookies>>,\n tokens: TokenPair,\n user?: PlatformUserResource,\n ) {\n cookieStore.set(COOKIE_AUTH_TOKEN, tokens.access_token, {\n httpOnly: true,\n secure: isProduction,\n sameSite: \"lax\",\n path: \"/\",\n maxAge: tokens.expires_in,\n });\n cookieStore.set(COOKIE_REFRESH_TOKEN, tokens.refresh_token, {\n httpOnly: true,\n secure: isProduction,\n sameSite: \"strict\",\n path: \"/api/auth\",\n maxAge: 7 * 24 * 60 * 60,\n });\n if (user) {\n const expiresAt = Date.now() + tokens.expires_in * 1000;\n cookieStore.set(\n COOKIE_AUTH_SESSION,\n JSON.stringify({ user, expiresAt }),\n {\n httpOnly: false,\n secure: isProduction,\n sameSite: \"lax\",\n path: \"/\",\n maxAge: tokens.expires_in,\n },\n );\n }\n }\n\n function clearPlatformCookies(\n cookieStore: Awaited<ReturnType<typeof cookies>>,\n ) {\n cookieStore.set(COOKIE_AUTH_TOKEN, \"\", { path: \"/\", maxAge: 0 });\n cookieStore.set(COOKIE_REFRESH_TOKEN, \"\", {\n path: \"/api/auth\",\n maxAge: 0,\n });\n cookieStore.set(COOKIE_AUTH_SESSION, \"\", { path: \"/\", maxAge: 0 });\n }\n\n async function handleLogin(req: NextRequest) {\n try {\n const body = (await req.json()) as Record<string, string>;\n const result = await client.platformLogin({\n email: body.email,\n password: body.password,\n });\n\n if (result.mfa_required) {\n return NextResponse.json({\n mfa_required: true,\n mfa_token: result.mfa_token,\n });\n }\n\n const tokens = result as TokenPair;\n const user = result.user;\n const cookieStore = await cookies();\n setPlatformCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch (err) {\n const message = err instanceof Error ? err.message : \"Login failed\";\n return NextResponse.json({ error: message }, { status: 401 });\n }\n }\n\n async function handleMFAChallenge(req: NextRequest) {\n try {\n const body = (await req.json()) as Record<string, string>;\n const result = await client.platformMfaChallenge({\n mfa_token: body.mfa_token,\n code: body.code,\n });\n\n const tokens = result as TokenPair;\n const user = result.user;\n const cookieStore = await cookies();\n setPlatformCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch (err) {\n const message =\n err instanceof Error ? err.message : \"MFA verification failed\";\n return NextResponse.json({ error: message }, { status: 401 });\n }\n }\n\n async function handleRefresh() {\n try {\n const cookieStore = await cookies();\n const refreshToken = cookieStore.get(COOKIE_REFRESH_TOKEN)?.value;\n\n if (!refreshToken) {\n clearPlatformCookies(cookieStore);\n return NextResponse.json(\n { error: \"No refresh token\" },\n { status: 401 },\n );\n }\n\n const tokens = await client.platformRefresh(refreshToken);\n const { data: user } = await client.platformGetMe(\n tokens.access_token,\n );\n setPlatformCookies(cookieStore, tokens, user);\n\n return NextResponse.json({ user });\n } catch {\n const cookieStore = await cookies();\n clearPlatformCookies(cookieStore);\n return NextResponse.json(\n { error: \"Refresh failed\" },\n { status: 401 },\n );\n }\n }\n\n async function handleLogout() {\n try {\n const cookieStore = await cookies();\n const refreshToken = cookieStore.get(COOKIE_REFRESH_TOKEN)?.value;\n if (refreshToken) {\n await client.platformLogout(refreshToken).catch(() => {});\n }\n clearPlatformCookies(cookieStore);\n return NextResponse.json({ success: true });\n } catch {\n const cookieStore = await cookies();\n clearPlatformCookies(cookieStore);\n return NextResponse.json({ success: true });\n }\n }\n\n async function handler(\n req: NextRequest,\n context: { params: Promise<{ inai: string[] }> },\n ) {\n const params = await context.params;\n const path = params.inai?.join(\"/\") ?? \"\";\n\n if (req.method === \"POST\") {\n switch (path) {\n case \"login\":\n return handleLogin(req);\n case \"mfa-challenge\":\n return handleMFAChallenge(req);\n case \"refresh\":\n return handleRefresh();\n case \"logout\":\n return handleLogout();\n }\n }\n\n return NextResponse.json({ error: \"Not found\" }, { status: 404 });\n }\n\n return {\n GET: handler,\n POST: handler,\n };\n}\n"],"mappings":"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","names":["import_headers","import_backend","import_shared","import_shared","import_headers","import_server","import_backend","import_shared","session"]}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
import { InAIAuthConfig, UserResource, PlatformUserResource, InAIAuthSDKConfig, ServerAuthObject } from '@inai-dev/types';
|
|
2
|
+
import { NextRequest, NextResponse } from 'next/server';
|
|
3
|
+
|
|
4
|
+
declare function createAuthRoutes(config: InAIAuthConfig): {
|
|
5
|
+
GET: (req: NextRequest, context: {
|
|
6
|
+
params: Promise<{
|
|
7
|
+
inai: string[];
|
|
8
|
+
}>;
|
|
9
|
+
}) => Promise<NextResponse<{
|
|
10
|
+
mfa_required: boolean;
|
|
11
|
+
mfa_token: string | undefined;
|
|
12
|
+
}> | NextResponse<{
|
|
13
|
+
user: UserResource;
|
|
14
|
+
}> | NextResponse<{
|
|
15
|
+
error: string;
|
|
16
|
+
}> | NextResponse<{
|
|
17
|
+
needs_email_verification: boolean;
|
|
18
|
+
user: UserResource | undefined;
|
|
19
|
+
}> | NextResponse<{
|
|
20
|
+
success: boolean;
|
|
21
|
+
}>>;
|
|
22
|
+
POST: (req: NextRequest, context: {
|
|
23
|
+
params: Promise<{
|
|
24
|
+
inai: string[];
|
|
25
|
+
}>;
|
|
26
|
+
}) => Promise<NextResponse<{
|
|
27
|
+
mfa_required: boolean;
|
|
28
|
+
mfa_token: string | undefined;
|
|
29
|
+
}> | NextResponse<{
|
|
30
|
+
user: UserResource;
|
|
31
|
+
}> | NextResponse<{
|
|
32
|
+
error: string;
|
|
33
|
+
}> | NextResponse<{
|
|
34
|
+
needs_email_verification: boolean;
|
|
35
|
+
user: UserResource | undefined;
|
|
36
|
+
}> | NextResponse<{
|
|
37
|
+
success: boolean;
|
|
38
|
+
}>>;
|
|
39
|
+
};
|
|
40
|
+
|
|
41
|
+
declare function createPlatformAuthRoutes(config: InAIAuthConfig): {
|
|
42
|
+
GET: (req: NextRequest, context: {
|
|
43
|
+
params: Promise<{
|
|
44
|
+
inai: string[];
|
|
45
|
+
}>;
|
|
46
|
+
}) => Promise<NextResponse<{
|
|
47
|
+
mfa_required: boolean;
|
|
48
|
+
mfa_token: string | undefined;
|
|
49
|
+
}> | NextResponse<{
|
|
50
|
+
user: PlatformUserResource | undefined;
|
|
51
|
+
}> | NextResponse<{
|
|
52
|
+
error: string;
|
|
53
|
+
}> | NextResponse<{
|
|
54
|
+
success: boolean;
|
|
55
|
+
}>>;
|
|
56
|
+
POST: (req: NextRequest, context: {
|
|
57
|
+
params: Promise<{
|
|
58
|
+
inai: string[];
|
|
59
|
+
}>;
|
|
60
|
+
}) => Promise<NextResponse<{
|
|
61
|
+
mfa_required: boolean;
|
|
62
|
+
mfa_token: string | undefined;
|
|
63
|
+
}> | NextResponse<{
|
|
64
|
+
user: PlatformUserResource | undefined;
|
|
65
|
+
}> | NextResponse<{
|
|
66
|
+
error: string;
|
|
67
|
+
}> | NextResponse<{
|
|
68
|
+
success: boolean;
|
|
69
|
+
}>>;
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
type ResolvedConfig = Required<InAIAuthSDKConfig>;
|
|
73
|
+
declare function configureAuth(config: InAIAuthSDKConfig): void;
|
|
74
|
+
declare function getAuthConfig(): ResolvedConfig;
|
|
75
|
+
|
|
76
|
+
declare function auth(): Promise<ServerAuthObject>;
|
|
77
|
+
declare function currentUser(opts?: {
|
|
78
|
+
fresh?: boolean;
|
|
79
|
+
}): Promise<UserResource | null>;
|
|
80
|
+
|
|
81
|
+
export { auth, configureAuth, createAuthRoutes, createPlatformAuthRoutes, currentUser, getAuthConfig };
|