@tern-secure/nextjs 5.2.0-canary.v20251023005301 → 5.2.0-canary.v20251028151628
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/dist/cjs/app-router/admin/actions.js +7 -2
- package/dist/cjs/app-router/admin/actions.js.map +1 -1
- package/dist/cjs/app-router/admin/request.js +2 -2
- package/dist/cjs/app-router/admin/request.js.map +1 -1
- package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/cjs/boundary/components.js +6 -0
- package/dist/cjs/boundary/components.js.map +1 -1
- package/dist/cjs/boundary/hooks/useSafeLayoutEffect.js +40 -0
- package/dist/cjs/boundary/hooks/useSafeLayoutEffect.js.map +1 -0
- package/dist/cjs/index.js +6 -0
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/server/ternSecureEdgeMiddleware.js.map +1 -1
- package/dist/cjs/types.js.map +1 -1
- package/dist/esm/app-router/admin/actions.js +7 -2
- package/dist/esm/app-router/admin/actions.js.map +1 -1
- package/dist/esm/app-router/admin/request.js +2 -2
- package/dist/esm/app-router/admin/request.js.map +1 -1
- package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/esm/boundary/components.js +6 -0
- package/dist/esm/boundary/components.js.map +1 -1
- package/dist/esm/boundary/hooks/useSafeLayoutEffect.js +6 -0
- package/dist/esm/boundary/hooks/useSafeLayoutEffect.js.map +1 -0
- package/dist/esm/index.js +7 -1
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/server/ternSecureEdgeMiddleware.js.map +1 -1
- package/dist/esm/types.js.map +1 -1
- package/dist/types/app-router/admin/actions.d.ts +1 -0
- package/dist/types/app-router/admin/actions.d.ts.map +1 -1
- package/dist/types/app-router/client/TernSecureProvider.d.ts.map +1 -1
- package/dist/types/boundary/components.d.ts +1 -1
- package/dist/types/boundary/components.d.ts.map +1 -1
- package/dist/types/boundary/hooks/useSafeLayoutEffect.d.ts +3 -0
- package/dist/types/boundary/hooks/useSafeLayoutEffect.d.ts.map +1 -0
- package/dist/types/index.d.ts +2 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types.d.ts +10 -1
- package/dist/types/types.d.ts.map +1 -1
- package/package.json +5 -5
- package/dist/cjs/server/node/SessionTernSecure.js +0 -55
- package/dist/cjs/server/node/SessionTernSecure.js.map +0 -1
- package/dist/cjs/server/node/auth.js +0 -90
- package/dist/cjs/server/node/auth.js.map +0 -1
- package/dist/cjs/server/node/index.js +0 -40
- package/dist/cjs/server/node/index.js.map +0 -1
- package/dist/cjs/server/node/node-session.js +0 -60
- package/dist/cjs/server/node/node-session.js.map +0 -1
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js +0 -181
- package/dist/cjs/server/node/ternSecureNodeMiddleware.js.map +0 -1
- package/dist/esm/server/node/SessionTernSecure.js +0 -31
- package/dist/esm/server/node/SessionTernSecure.js.map +0 -1
- package/dist/esm/server/node/auth.js +0 -63
- package/dist/esm/server/node/auth.js.map +0 -1
- package/dist/esm/server/node/index.js +0 -19
- package/dist/esm/server/node/index.js.map +0 -1
- package/dist/esm/server/node/node-session.js +0 -36
- package/dist/esm/server/node/node-session.js.map +0 -1
- package/dist/esm/server/node/ternSecureNodeMiddleware.js +0 -164
- package/dist/esm/server/node/ternSecureNodeMiddleware.js.map +0 -1
- package/dist/types/server/node/SessionTernSecure.d.ts +0 -3
- package/dist/types/server/node/SessionTernSecure.d.ts.map +0 -1
- package/dist/types/server/node/auth.d.ts +0 -23
- package/dist/types/server/node/auth.d.ts.map +0 -1
- package/dist/types/server/node/index.d.ts +0 -3
- package/dist/types/server/node/index.d.ts.map +0 -1
- package/dist/types/server/node/node-session.d.ts +0 -4
- package/dist/types/server/node/node-session.d.ts.map +0 -1
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts +0 -54
- package/dist/types/server/node/ternSecureNodeMiddleware.d.ts.map +0 -1
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import { cookies } from "next/headers";
|
|
2
|
-
import { cache } from "react";
|
|
3
|
-
import { TernSecureError } from "../../errors";
|
|
4
|
-
import { verifyFirebaseToken } from "./SessionTernSecure";
|
|
5
|
-
const auth = cache(async () => {
|
|
6
|
-
try {
|
|
7
|
-
const cookieStore = await cookies();
|
|
8
|
-
const sessionCookie = cookieStore.get("_session_cookie")?.value;
|
|
9
|
-
if (sessionCookie) {
|
|
10
|
-
const result = await verifyFirebaseToken(sessionCookie);
|
|
11
|
-
if (result.valid) {
|
|
12
|
-
const user = {
|
|
13
|
-
uid: result.uid ?? "",
|
|
14
|
-
email: result.email && typeof result.email === "string" ? result.email : null,
|
|
15
|
-
tenantId: result.tenant || "default",
|
|
16
|
-
authTime: result.authTime && typeof result.authTime === "number" ? result.authTime : void 0
|
|
17
|
-
};
|
|
18
|
-
return { user, error: null };
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return {
|
|
22
|
-
user: null,
|
|
23
|
-
error: new TernSecureError("UNAUTHENTICATED", "No valid session found")
|
|
24
|
-
};
|
|
25
|
-
} catch (error) {
|
|
26
|
-
console.error("Error in Auth:", error);
|
|
27
|
-
if (error instanceof TernSecureError) {
|
|
28
|
-
return {
|
|
29
|
-
user: null,
|
|
30
|
-
error
|
|
31
|
-
};
|
|
32
|
-
}
|
|
33
|
-
return {
|
|
34
|
-
user: null,
|
|
35
|
-
error: new TernSecureError(
|
|
36
|
-
"INTERNAL_ERROR",
|
|
37
|
-
"An unexpected error occurred"
|
|
38
|
-
)
|
|
39
|
-
};
|
|
40
|
-
}
|
|
41
|
-
});
|
|
42
|
-
const isAuthenticated = cache(async () => {
|
|
43
|
-
const { user } = await auth();
|
|
44
|
-
return user !== null;
|
|
45
|
-
});
|
|
46
|
-
const getUser = cache(async () => {
|
|
47
|
-
const { user } = await auth();
|
|
48
|
-
return user;
|
|
49
|
-
});
|
|
50
|
-
const requireAuth = cache(async () => {
|
|
51
|
-
const { user, error } = await auth();
|
|
52
|
-
if (!user) {
|
|
53
|
-
throw error || new Error("Authentication required");
|
|
54
|
-
}
|
|
55
|
-
return user;
|
|
56
|
-
});
|
|
57
|
-
export {
|
|
58
|
-
auth,
|
|
59
|
-
getUser,
|
|
60
|
-
isAuthenticated,
|
|
61
|
-
requireAuth
|
|
62
|
-
};
|
|
63
|
-
//# sourceMappingURL=auth.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/node/auth.ts"],"sourcesContent":["import { cookies } from \"next/headers\";\nimport { cache } from \"react\";\n\nimport { TernSecureError } from \"../../errors\";\nimport type { BaseUser } from \"../../types\";\nimport { verifyFirebaseToken } from \"./SessionTernSecure\";\n\nexport interface AuthResult {\n user: BaseUser | null;\n error: Error | null;\n}\n\n/**\n * Get the current authenticated user from the session cookies\n */\nexport const auth = cache(async (): Promise<AuthResult> => {\n try {\n const cookieStore = await cookies();\n\n const sessionCookie = cookieStore.get(\"_session_cookie\")?.value;\n if (sessionCookie) {\n const result = await verifyFirebaseToken(sessionCookie);\n if (result.valid) {\n const user: BaseUser = {\n uid: result.uid ?? \"\",\n email:\n result.email && typeof result.email === \"string\"\n ? result.email\n : null,\n tenantId: result.tenant || \"default\",\n authTime:\n result.authTime && typeof result.authTime === \"number\"\n ? result.authTime\n : undefined,\n };\n return { user, error: null };\n }\n }\n\n return {\n user: null,\n error: new TernSecureError(\"UNAUTHENTICATED\", \"No valid session found\"),\n };\n } catch (error) {\n console.error(\"Error in Auth:\", error);\n if (error instanceof TernSecureError) {\n return {\n user: null,\n error,\n };\n }\n return {\n user: null,\n error: new TernSecureError(\n \"INTERNAL_ERROR\",\n \"An unexpected error occurred\"\n ),\n };\n }\n});\n\n/**\n * Type guard to check if user is authenticated\n */\nexport const isAuthenticated = cache(async (): Promise<boolean> => {\n const { user } = await auth();\n return user !== null;\n});\n\n/**\n * Get user info from auth result\n */\nexport const getUser = cache(async (): Promise<BaseUser | null> => {\n const { user } = await auth();\n return user;\n});\n\n/**\n * Require authentication\n * Throws error if not authenticated\n */\nexport const requireAuth = cache(async (): Promise<BaseUser> => {\n const { user, error } = await auth();\n\n if (!user) {\n throw error || new Error(\"Authentication required\");\n }\n\n return user;\n});\n"],"mappings":"AAAA,SAAS,eAAe;AACxB,SAAS,aAAa;AAEtB,SAAS,uBAAuB;AAEhC,SAAS,2BAA2B;AAU7B,MAAM,OAAO,MAAM,YAAiC;AACzD,MAAI;AACF,UAAM,cAAc,MAAM,QAAQ;AAElC,UAAM,gBAAgB,YAAY,IAAI,iBAAiB,GAAG;AAC1D,QAAI,eAAe;AACjB,YAAM,SAAS,MAAM,oBAAoB,aAAa;AACtD,UAAI,OAAO,OAAO;AAChB,cAAM,OAAiB;AAAA,UACrB,KAAK,OAAO,OAAO;AAAA,UACnB,OACE,OAAO,SAAS,OAAO,OAAO,UAAU,WACpC,OAAO,QACP;AAAA,UACN,UAAU,OAAO,UAAU;AAAA,UAC3B,UACE,OAAO,YAAY,OAAO,OAAO,aAAa,WAC1C,OAAO,WACP;AAAA,QACR;AACA,eAAO,EAAE,MAAM,OAAO,KAAK;AAAA,MAC7B;AAAA,IACF;AAEA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,IAAI,gBAAgB,mBAAmB,wBAAwB;AAAA,IACxE;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,kBAAkB,KAAK;AACrC,QAAI,iBAAiB,iBAAiB;AACpC,aAAO;AAAA,QACL,MAAM;AAAA,QACN;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,MAAM;AAAA,MACN,OAAO,IAAI;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,IACF;AAAA,EACF;AACF,CAAC;AAKM,MAAM,kBAAkB,MAAM,YAA8B;AACjE,QAAM,EAAE,KAAK,IAAI,MAAM,KAAK;AAC5B,SAAO,SAAS;AAClB,CAAC;AAKM,MAAM,UAAU,MAAM,YAAsC;AACjE,QAAM,EAAE,KAAK,IAAI,MAAM,KAAK;AAC5B,SAAO;AACT,CAAC;AAMM,MAAM,cAAc,MAAM,YAA+B;AAC9D,QAAM,EAAE,MAAM,MAAM,IAAI,MAAM,KAAK;AAEnC,MAAI,CAAC,MAAM;AACT,UAAM,SAAS,IAAI,MAAM,yBAAyB;AAAA,EACpD;AAEA,SAAO;AACT,CAAC;","names":[]}
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ternSecureMiddleware,
|
|
3
|
-
createRouteMatcher
|
|
4
|
-
} from "./ternSecureNodeMiddleware";
|
|
5
|
-
import {
|
|
6
|
-
auth,
|
|
7
|
-
getUser,
|
|
8
|
-
isAuthenticated,
|
|
9
|
-
requireAuth
|
|
10
|
-
} from "./auth";
|
|
11
|
-
export {
|
|
12
|
-
auth,
|
|
13
|
-
createRouteMatcher,
|
|
14
|
-
getUser,
|
|
15
|
-
isAuthenticated,
|
|
16
|
-
requireAuth,
|
|
17
|
-
ternSecureMiddleware
|
|
18
|
-
};
|
|
19
|
-
//# sourceMappingURL=index.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/node/index.ts"],"sourcesContent":["export {\n ternSecureMiddleware,\n createRouteMatcher,\n} from \"./ternSecureNodeMiddleware\";\nexport {\n auth,\n getUser,\n isAuthenticated,\n requireAuth,\n type AuthResult,\n} from \"./auth\";"],"mappings":"AAAA;AAAA,EACE;AAAA,EACA;AAAA,OACK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAEK;","names":[]}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
import { verifyFirebaseToken } from "./SessionTernSecure";
|
|
2
|
-
async function verifySession(request) {
|
|
3
|
-
try {
|
|
4
|
-
const sessionCookie = request.cookies.get("_session_cookie")?.value;
|
|
5
|
-
if (sessionCookie) {
|
|
6
|
-
const result = await verifyFirebaseToken(sessionCookie);
|
|
7
|
-
if (result.valid) {
|
|
8
|
-
return {
|
|
9
|
-
isAuthenticated: true,
|
|
10
|
-
user: {
|
|
11
|
-
uid: result.uid ?? "",
|
|
12
|
-
email: result.email || null,
|
|
13
|
-
tenantId: result.tenant || "default",
|
|
14
|
-
disabled: false
|
|
15
|
-
}
|
|
16
|
-
};
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
return {
|
|
20
|
-
isAuthenticated: false,
|
|
21
|
-
user: null,
|
|
22
|
-
error: "No valid session found"
|
|
23
|
-
};
|
|
24
|
-
} catch (error) {
|
|
25
|
-
console.error("Session verification error:", error);
|
|
26
|
-
return {
|
|
27
|
-
isAuthenticated: false,
|
|
28
|
-
user: null,
|
|
29
|
-
error: error instanceof Error ? error.message : "Session verification failed"
|
|
30
|
-
};
|
|
31
|
-
}
|
|
32
|
-
}
|
|
33
|
-
export {
|
|
34
|
-
verifySession
|
|
35
|
-
};
|
|
36
|
-
//# sourceMappingURL=node-session.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/node/node-session.ts"],"sourcesContent":["import type { NextRequest } from \"next/server\";\n\nimport type { SessionResult } from \"../types\";\nimport { verifyFirebaseToken } from \"./SessionTernSecure\";\n\nexport async function verifySession(\n request: NextRequest\n): Promise<SessionResult> {\n try {\n const sessionCookie = request.cookies.get(\"_session_cookie\")?.value;\n if (sessionCookie) {\n const result = await verifyFirebaseToken(sessionCookie);\n if (result.valid) {\n //const disabledKey = `disabled_user:${result.uid}`;\n //const disabledUser: DisabledUserRecord | null =\n // await redis.get(disabledKey);\n //const isDisabled = !!disabledUser;\n return {\n isAuthenticated: true,\n user: {\n uid: result.uid ?? \"\",\n email: result.email || null,\n tenantId: result.tenant || \"default\",\n disabled: false,\n },\n };\n }\n }\n return {\n isAuthenticated: false,\n user: null,\n error: \"No valid session found\",\n };\n } catch (error) {\n console.error(\"Session verification error:\", error);\n return {\n isAuthenticated: false,\n user: null,\n error:\n error instanceof Error ? error.message : \"Session verification failed\",\n };\n }\n}\n"],"mappings":"AAGA,SAAS,2BAA2B;AAEpC,eAAsB,cACpB,SACwB;AACxB,MAAI;AACF,UAAM,gBAAgB,QAAQ,QAAQ,IAAI,iBAAiB,GAAG;AAC9D,QAAI,eAAe;AACjB,YAAM,SAAS,MAAM,oBAAoB,aAAa;AACtD,UAAI,OAAO,OAAO;AAKhB,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,MAAM;AAAA,YACJ,KAAK,OAAO,OAAO;AAAA,YACnB,OAAO,OAAO,SAAS;AAAA,YACvB,UAAU,OAAO,UAAU;AAAA,YAC3B,UAAU;AAAA,UACZ;AAAA,QACF;AAAA,MACF;AAAA,IACF;AACA,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,OAAO;AAAA,IACT;AAAA,EACF,SAAS,OAAO;AACd,YAAQ,MAAM,+BAA+B,KAAK;AAClD,WAAO;AAAA,MACL,iBAAiB;AAAA,MACjB,MAAM;AAAA,MACN,OACE,iBAAiB,QAAQ,MAAM,UAAU;AAAA,IAC7C;AAAA,EACF;AACF;","names":[]}
|
|
@@ -1,164 +0,0 @@
|
|
|
1
|
-
import { createRedirect, createTernSecureRequest } from "@tern-secure/backend";
|
|
2
|
-
import {
|
|
3
|
-
createBackendInstance
|
|
4
|
-
} from "@tern-secure/backend/admin";
|
|
5
|
-
import { NextResponse } from "next/server";
|
|
6
|
-
import { SIGN_IN_URL, SIGN_UP_URL } from "../constant";
|
|
7
|
-
import {
|
|
8
|
-
isNextjsNotFoundError,
|
|
9
|
-
isRedirectToSignInError,
|
|
10
|
-
isRedirectToSignUpError,
|
|
11
|
-
redirectToSignInError,
|
|
12
|
-
redirectToSignUpError
|
|
13
|
-
} from "../nextErrors";
|
|
14
|
-
const createRouteMatcher = (patterns) => {
|
|
15
|
-
return (request) => {
|
|
16
|
-
const { pathname } = request.nextUrl;
|
|
17
|
-
return patterns.some((pattern) => {
|
|
18
|
-
const regexPattern = pattern.replace(/[.*+?^${}()|[\]\\]/g, "\\$&").replace(/\\\*/g, ".*");
|
|
19
|
-
return new RegExp(`^${regexPattern}$`).test(pathname);
|
|
20
|
-
});
|
|
21
|
-
};
|
|
22
|
-
};
|
|
23
|
-
const authenticateMiddlewareRequest = async (request) => {
|
|
24
|
-
try {
|
|
25
|
-
const requestState = await createBackendInstance(request);
|
|
26
|
-
const authResult = requestState.requestState.auth();
|
|
27
|
-
return {
|
|
28
|
-
user: {
|
|
29
|
-
uid: authResult.session.uid,
|
|
30
|
-
email: authResult.session.email || null,
|
|
31
|
-
tenantId: authResult.session.firebase?.tenant || "default",
|
|
32
|
-
authTime: authResult.session.auth_time
|
|
33
|
-
},
|
|
34
|
-
session: requestState.requestState.token
|
|
35
|
-
};
|
|
36
|
-
} catch (error) {
|
|
37
|
-
console.error(
|
|
38
|
-
"Auth check error:",
|
|
39
|
-
error instanceof Error ? error.message : "Unknown error"
|
|
40
|
-
);
|
|
41
|
-
return {
|
|
42
|
-
user: null,
|
|
43
|
-
session: null
|
|
44
|
-
};
|
|
45
|
-
}
|
|
46
|
-
};
|
|
47
|
-
const ternSecureMiddleware = (...args) => {
|
|
48
|
-
const [request, event] = parseRequestAndEvent(args);
|
|
49
|
-
const [handler, params] = parseHandlerAndOptions(args);
|
|
50
|
-
const middleware = () => {
|
|
51
|
-
const withAuthNextMiddleware = async (request2, event2) => {
|
|
52
|
-
const resolvedParams = typeof params === "function" ? await params(request2) : params;
|
|
53
|
-
const signInUrl = resolvedParams.signInUrl || SIGN_IN_URL;
|
|
54
|
-
const signUpUrl = resolvedParams.signUpUrl || SIGN_UP_URL;
|
|
55
|
-
let handlerResult = NextResponse.next();
|
|
56
|
-
if (handler) {
|
|
57
|
-
const createAuthHandler = async () => {
|
|
58
|
-
const authObject = await authenticateMiddlewareRequest(request2);
|
|
59
|
-
const getAuth = async () => {
|
|
60
|
-
const ternSecureRequest = createTernSecureRequest(request2);
|
|
61
|
-
const { redirectToSignIn, redirectToSignUp } = createMiddlewareRedirects(
|
|
62
|
-
ternSecureRequest,
|
|
63
|
-
signInUrl,
|
|
64
|
-
signUpUrl
|
|
65
|
-
);
|
|
66
|
-
return {
|
|
67
|
-
...authObject,
|
|
68
|
-
redirectToSignIn,
|
|
69
|
-
redirectToSignUp
|
|
70
|
-
};
|
|
71
|
-
};
|
|
72
|
-
const protect = async () => {
|
|
73
|
-
if (!authObject.user || !authObject.session) {
|
|
74
|
-
const redirectUrl = new URL(signInUrl || "/sign-in", request2.url);
|
|
75
|
-
redirectUrl.searchParams.set(
|
|
76
|
-
"redirect",
|
|
77
|
-
request2.nextUrl.pathname
|
|
78
|
-
);
|
|
79
|
-
redirectToSignInError(redirectUrl.toString());
|
|
80
|
-
}
|
|
81
|
-
};
|
|
82
|
-
const authHandler = Object.assign(getAuth, {
|
|
83
|
-
protect,
|
|
84
|
-
user: authObject.user,
|
|
85
|
-
session: authObject.session
|
|
86
|
-
});
|
|
87
|
-
return authHandler;
|
|
88
|
-
};
|
|
89
|
-
try {
|
|
90
|
-
const auth = await createAuthHandler();
|
|
91
|
-
const userHandlerResult = await handler(auth, request2, event2);
|
|
92
|
-
handlerResult = userHandlerResult || handlerResult;
|
|
93
|
-
} catch (error) {
|
|
94
|
-
const ternSecureRequest = createTernSecureRequest(request2);
|
|
95
|
-
handlerResult = handleControlError(error, ternSecureRequest, request2);
|
|
96
|
-
}
|
|
97
|
-
return handlerResult;
|
|
98
|
-
}
|
|
99
|
-
return handlerResult;
|
|
100
|
-
};
|
|
101
|
-
const nextMiddleware = async (request2, event2) => {
|
|
102
|
-
return withAuthNextMiddleware(request2, event2);
|
|
103
|
-
};
|
|
104
|
-
if (request && event) {
|
|
105
|
-
return nextMiddleware(request, event);
|
|
106
|
-
}
|
|
107
|
-
return nextMiddleware;
|
|
108
|
-
};
|
|
109
|
-
return middleware();
|
|
110
|
-
};
|
|
111
|
-
const parseRequestAndEvent = (args) => {
|
|
112
|
-
return [
|
|
113
|
-
args[0] instanceof Request ? args[0] : void 0,
|
|
114
|
-
args[0] instanceof Request ? args[1] : void 0
|
|
115
|
-
];
|
|
116
|
-
};
|
|
117
|
-
const parseHandlerAndOptions = (args) => {
|
|
118
|
-
return [
|
|
119
|
-
typeof args[0] === "function" ? args[0] : void 0,
|
|
120
|
-
(args.length === 2 ? args[1] : typeof args[0] === "function" ? {} : args[0]) || {}
|
|
121
|
-
];
|
|
122
|
-
};
|
|
123
|
-
const createMiddlewareRedirects = (ternSecureRequest, signInUrl, signUpUrl) => {
|
|
124
|
-
const redirectToSignIn = (opts = {}) => {
|
|
125
|
-
const url = signInUrl || ternSecureRequest.ternUrl.toString();
|
|
126
|
-
redirectToSignInError(url, opts.returnBackUrl);
|
|
127
|
-
};
|
|
128
|
-
const redirectToSignUp = (opts = {}) => {
|
|
129
|
-
const url = signUpUrl || ternSecureRequest.ternUrl.toString();
|
|
130
|
-
redirectToSignUpError(url, opts.returnBackUrl);
|
|
131
|
-
};
|
|
132
|
-
return { redirectToSignIn, redirectToSignUp };
|
|
133
|
-
};
|
|
134
|
-
const handleControlError = (error, ternSecureRequest, nextrequest) => {
|
|
135
|
-
if (isNextjsNotFoundError(error)) {
|
|
136
|
-
return NextResponse.rewrite(new URL("/404", nextrequest.url));
|
|
137
|
-
}
|
|
138
|
-
if (isRedirectToSignInError(error)) {
|
|
139
|
-
const redirectAdapter = (url) => NextResponse.redirect(new URL(url, nextrequest.url));
|
|
140
|
-
const { redirectToSignIn } = createRedirect({
|
|
141
|
-
redirectAdapter,
|
|
142
|
-
baseUrl: ternSecureRequest.ternUrl.origin,
|
|
143
|
-
signInUrl: SIGN_IN_URL,
|
|
144
|
-
signUpUrl: SIGN_UP_URL
|
|
145
|
-
});
|
|
146
|
-
return redirectToSignIn({ returnBackUrl: error.returnBackUrl });
|
|
147
|
-
}
|
|
148
|
-
if (isRedirectToSignUpError(error)) {
|
|
149
|
-
const redirectAdapter = (url) => NextResponse.redirect(new URL(url, nextrequest.url));
|
|
150
|
-
const { redirectToSignUp } = createRedirect({
|
|
151
|
-
redirectAdapter,
|
|
152
|
-
baseUrl: ternSecureRequest.ternUrl.origin,
|
|
153
|
-
signInUrl: SIGN_IN_URL,
|
|
154
|
-
signUpUrl: SIGN_UP_URL
|
|
155
|
-
});
|
|
156
|
-
return redirectToSignUp({ returnBackUrl: error.returnBackUrl });
|
|
157
|
-
}
|
|
158
|
-
throw error;
|
|
159
|
-
};
|
|
160
|
-
export {
|
|
161
|
-
createRouteMatcher,
|
|
162
|
-
ternSecureMiddleware
|
|
163
|
-
};
|
|
164
|
-
//# sourceMappingURL=ternSecureNodeMiddleware.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/server/node/ternSecureNodeMiddleware.ts"],"sourcesContent":["import {createRedirect, createTernSecureRequest, type TernSecureRequest } from \"@tern-secure/backend\";\nimport {\n createBackendInstance,\n} from \"@tern-secure/backend/admin\";\nimport type { NextMiddleware,NextRequest } from \"next/server\";\nimport {NextResponse } from \"next/server\";\n\nimport { SIGN_IN_URL, SIGN_UP_URL } from \"../constant\";\nimport {\n isNextjsNotFoundError,\n isRedirectToSignInError,\n isRedirectToSignUpError,\n redirectToSignInError,\n redirectToSignUpError,\n} from \"../nextErrors\";\nimport type { BaseUser ,\n NextMiddlewareEvtParam,\n NextMiddlewareRequestParam,\n NextMiddlewareReturn,\n} from \"../types\";\n\ntype RedirectToParams = { returnBackUrl?: string | URL | null };\nexport type RedirectFun<ReturnType> = (params?: RedirectToParams) => ReturnType;\n\nexport type AuthObject = {\n user: BaseUser | null;\n session: string | null;\n};\n\nexport interface MiddlewareAuth extends AuthObject {\n (): Promise<MiddlewareAuthObject>;\n protect: () => Promise<void>;\n}\n\ntype MiddlewareHandler = (\n auth: MiddlewareAuth,\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n) => NextMiddlewareReturn;\n\nexport type MiddlewareAuthObject = AuthObject & {\n redirectToSignIn: RedirectFun<Response>;\n redirectToSignUp: RedirectFun<Response>;\n};\n\n/**\n * Create a route matcher function for public paths\n */\nexport const createRouteMatcher = (patterns: string[]) => {\n return (request: NextRequest): boolean => {\n const { pathname } = request.nextUrl;\n return patterns.some((pattern) => {\n const regexPattern = pattern\n .replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\")\n .replace(/\\\\\\*/g, \".*\");\n\n return new RegExp(`^${regexPattern}$`).test(pathname);\n });\n };\n};\n\nconst authenticateMiddlewareRequest = async (\n request: NextRequest\n): Promise<AuthObject> => {\n try {\n const requestState = await createBackendInstance(request);\n const authResult = requestState.requestState.auth();\n\n return {\n user: {\n uid: authResult.session.uid,\n email: authResult.session.email || null,\n tenantId: authResult.session.firebase?.tenant || \"default\",\n authTime: authResult.session.auth_time,\n },\n session: requestState.requestState.token,\n };\n } catch (error) {\n console.error(\n \"Auth check error:\",\n error instanceof Error ? error.message : \"Unknown error\"\n );\n return {\n user: null,\n session: null,\n };\n }\n};\n\nexport interface MiddlewareOptions {\n signInUrl?: string;\n signUpUrl?: string;\n debug?: boolean;\n}\ntype MiddlewareOptionsCallback = (\n req: NextRequest\n) => MiddlewareOptions | Promise<MiddlewareOptions>;\n\ninterface TernSecureMiddleware {\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, options);\n */\n (handler: MiddlewareHandler, options?: MiddlewareOptions): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware((auth, request, event) => { ... }, (req) => options);\n */\n (\n handler: MiddlewareHandler,\n options?: MiddlewareOptionsCallback\n ): NextMiddleware;\n\n /**\n * @example\n * export default ternSecureMiddleware(options);\n */\n (options?: MiddlewareOptions): NextMiddleware;\n /**\n * @example\n * export default ternSecureMiddleware;\n */\n (\n request: NextMiddlewareRequestParam,\n event: NextMiddlewareEvtParam\n ): NextMiddlewareReturn;\n}\n\nexport const ternSecureMiddleware = ((\n ...args: unknown[]\n): NextMiddleware | NextMiddlewareReturn => {\n const [request, event] = parseRequestAndEvent(args);\n const [handler, params] = parseHandlerAndOptions(args);\n\n const middleware = () => {\n const withAuthNextMiddleware: NextMiddleware = async (request, event) => {\n const resolvedParams =\n typeof params === \"function\" ? await params(request) : params;\n\n const signInUrl = resolvedParams.signInUrl || SIGN_IN_URL;\n const signUpUrl = resolvedParams.signUpUrl || SIGN_UP_URL;\n\n let handlerResult: Response = NextResponse.next();\n\n if (handler) {\n const createAuthHandler = async (): Promise<MiddlewareAuth> => {\n const authObject = await authenticateMiddlewareRequest(request);\n\n const getAuth = async (): Promise<MiddlewareAuthObject> => {\n const ternSecureRequest = createTernSecureRequest(request);\n const { redirectToSignIn, redirectToSignUp } =\n createMiddlewareRedirects(\n ternSecureRequest,\n signInUrl,\n signUpUrl\n );\n\n return {\n ...authObject,\n redirectToSignIn,\n redirectToSignUp,\n };\n };\n\n const protect = async (): Promise<void> => {\n if (!authObject.user || !authObject.session) {\n const redirectUrl = new URL(signInUrl || \"/sign-in\", request.url);\n redirectUrl.searchParams.set(\n \"redirect\",\n request.nextUrl.pathname\n );\n redirectToSignInError(redirectUrl.toString());\n }\n };\n\n // Return the MiddlewareAuth object with direct property access\n const authHandler = Object.assign(getAuth, {\n protect,\n user: authObject.user,\n session: authObject.session,\n });\n\n return authHandler as MiddlewareAuth;\n };\n\n try {\n const auth = await createAuthHandler();\n const userHandlerResult = await handler(auth, request, event);\n handlerResult = userHandlerResult || handlerResult;\n } catch (error) {\n const ternSecureRequest = createTernSecureRequest(request);\n handlerResult = handleControlError(error, ternSecureRequest, request);\n }\n\n return handlerResult;\n }\n\n return handlerResult;\n };\n\n const nextMiddleware: NextMiddleware = async (request, event) => {\n return withAuthNextMiddleware(request, event);\n };\n\n if (request && event) {\n return nextMiddleware(request, event);\n }\n\n return nextMiddleware;\n };\n return middleware();\n}) as TernSecureMiddleware;\n\nconst parseRequestAndEvent = (args: unknown[]) => {\n return [\n args[0] instanceof Request ? args[0] : undefined,\n args[0] instanceof Request ? args[1] : undefined,\n ] as [\n NextMiddlewareRequestParam | undefined,\n NextMiddlewareEvtParam | undefined,\n ];\n};\n\nconst parseHandlerAndOptions = (args: unknown[]) => {\n return [\n typeof args[0] === \"function\" ? args[0] : undefined,\n (args.length === 2\n ? args[1]\n : typeof args[0] === \"function\"\n ? {}\n : args[0]) || {},\n ] as [\n MiddlewareHandler | undefined,\n MiddlewareOptions | MiddlewareOptionsCallback,\n ];\n};\n\n/**\n * Create middleware redirect functions\n */\nconst createMiddlewareRedirects = (\n ternSecureRequest: TernSecureRequest,\n signInUrl: string,\n signUpUrl: string\n) => {\n const redirectToSignIn: MiddlewareAuthObject[\"redirectToSignIn\"] = (\n opts = {}\n ) => {\n const url = signInUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignInError(url, opts.returnBackUrl);\n };\n\n const redirectToSignUp: MiddlewareAuthObject[\"redirectToSignUp\"] = (\n opts = {}\n ) => {\n const url = signUpUrl || ternSecureRequest.ternUrl.toString();\n redirectToSignUpError(url, opts.returnBackUrl);\n };\n\n return { redirectToSignIn, redirectToSignUp };\n};\n\n/**\n * Handle control flow errors in middleware\n */\nconst handleControlError = (\n error: any,\n ternSecureRequest: TernSecureRequest,\n nextrequest: NextRequest\n): Response => {\n if (isNextjsNotFoundError(error)) {\n return NextResponse.rewrite(new URL(\"/404\", nextrequest.url));\n }\n\n // Handle redirect to sign in errors\n if (isRedirectToSignInError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignIn } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignIn({ returnBackUrl: error.returnBackUrl });\n }\n\n // Handle redirect to sign up errors\n if (isRedirectToSignUpError(error)) {\n const redirectAdapter = (url: string) =>\n NextResponse.redirect(new URL(url, nextrequest.url));\n const { redirectToSignUp } = createRedirect({\n redirectAdapter,\n baseUrl: ternSecureRequest.ternUrl.origin,\n signInUrl: SIGN_IN_URL,\n signUpUrl: SIGN_UP_URL,\n });\n\n return redirectToSignUp({ returnBackUrl: error.returnBackUrl });\n }\n\n throw error;\n};\n"],"mappings":"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","names":["request","event"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"SessionTernSecure.d.ts","sourceRoot":"","sources":["../../../../src/server/node/SessionTernSecure.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAEjE,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,sBAAsB,CAAC,CA0BjC"}
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import type { BaseUser } from "../../types";
|
|
2
|
-
export interface AuthResult {
|
|
3
|
-
user: BaseUser | null;
|
|
4
|
-
error: Error | null;
|
|
5
|
-
}
|
|
6
|
-
/**
|
|
7
|
-
* Get the current authenticated user from the session cookies
|
|
8
|
-
*/
|
|
9
|
-
export declare const auth: () => Promise<AuthResult>;
|
|
10
|
-
/**
|
|
11
|
-
* Type guard to check if user is authenticated
|
|
12
|
-
*/
|
|
13
|
-
export declare const isAuthenticated: () => Promise<boolean>;
|
|
14
|
-
/**
|
|
15
|
-
* Get user info from auth result
|
|
16
|
-
*/
|
|
17
|
-
export declare const getUser: () => Promise<BaseUser | null>;
|
|
18
|
-
/**
|
|
19
|
-
* Require authentication
|
|
20
|
-
* Throws error if not authenticated
|
|
21
|
-
*/
|
|
22
|
-
export declare const requireAuth: () => Promise<BaseUser>;
|
|
23
|
-
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/server/node/auth.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAG5C,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,eAAO,MAAM,IAAI,QAAmB,OAAO,CAAC,UAAU,CA4CpD,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,eAAe,QAAmB,OAAO,CAAC,OAAO,CAG5D,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,OAAO,QAAmB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAG5D,CAAC;AAEH;;;GAGG;AACH,eAAO,MAAM,WAAW,QAAmB,OAAO,CAAC,QAAQ,CAQzD,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/server/node/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,IAAI,EACJ,OAAO,EACP,eAAe,EACf,WAAW,EACX,KAAK,UAAU,GAChB,MAAM,QAAQ,CAAC"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"node-session.d.ts","sourceRoot":"","sources":["../../../../src/server/node/node-session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAG9C,wBAAsB,aAAa,CACjC,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,aAAa,CAAC,CAmCxB"}
|
|
@@ -1,54 +0,0 @@
|
|
|
1
|
-
import type { NextMiddleware, NextRequest } from "next/server";
|
|
2
|
-
import type { BaseUser, NextMiddlewareEvtParam, NextMiddlewareRequestParam, NextMiddlewareReturn } from "../types";
|
|
3
|
-
type RedirectToParams = {
|
|
4
|
-
returnBackUrl?: string | URL | null;
|
|
5
|
-
};
|
|
6
|
-
export type RedirectFun<ReturnType> = (params?: RedirectToParams) => ReturnType;
|
|
7
|
-
export type AuthObject = {
|
|
8
|
-
user: BaseUser | null;
|
|
9
|
-
session: string | null;
|
|
10
|
-
};
|
|
11
|
-
export interface MiddlewareAuth extends AuthObject {
|
|
12
|
-
(): Promise<MiddlewareAuthObject>;
|
|
13
|
-
protect: () => Promise<void>;
|
|
14
|
-
}
|
|
15
|
-
type MiddlewareHandler = (auth: MiddlewareAuth, request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam) => NextMiddlewareReturn;
|
|
16
|
-
export type MiddlewareAuthObject = AuthObject & {
|
|
17
|
-
redirectToSignIn: RedirectFun<Response>;
|
|
18
|
-
redirectToSignUp: RedirectFun<Response>;
|
|
19
|
-
};
|
|
20
|
-
/**
|
|
21
|
-
* Create a route matcher function for public paths
|
|
22
|
-
*/
|
|
23
|
-
export declare const createRouteMatcher: (patterns: string[]) => (request: NextRequest) => boolean;
|
|
24
|
-
export interface MiddlewareOptions {
|
|
25
|
-
signInUrl?: string;
|
|
26
|
-
signUpUrl?: string;
|
|
27
|
-
debug?: boolean;
|
|
28
|
-
}
|
|
29
|
-
type MiddlewareOptionsCallback = (req: NextRequest) => MiddlewareOptions | Promise<MiddlewareOptions>;
|
|
30
|
-
interface TernSecureMiddleware {
|
|
31
|
-
/**
|
|
32
|
-
* @example
|
|
33
|
-
* export default ternSecureMiddleware((auth, request, event) => { ... }, options);
|
|
34
|
-
*/
|
|
35
|
-
(handler: MiddlewareHandler, options?: MiddlewareOptions): NextMiddleware;
|
|
36
|
-
/**
|
|
37
|
-
* @example
|
|
38
|
-
* export default ternSecureMiddleware((auth, request, event) => { ... }, (req) => options);
|
|
39
|
-
*/
|
|
40
|
-
(handler: MiddlewareHandler, options?: MiddlewareOptionsCallback): NextMiddleware;
|
|
41
|
-
/**
|
|
42
|
-
* @example
|
|
43
|
-
* export default ternSecureMiddleware(options);
|
|
44
|
-
*/
|
|
45
|
-
(options?: MiddlewareOptions): NextMiddleware;
|
|
46
|
-
/**
|
|
47
|
-
* @example
|
|
48
|
-
* export default ternSecureMiddleware;
|
|
49
|
-
*/
|
|
50
|
-
(request: NextMiddlewareRequestParam, event: NextMiddlewareEvtParam): NextMiddlewareReturn;
|
|
51
|
-
}
|
|
52
|
-
export declare const ternSecureMiddleware: TernSecureMiddleware;
|
|
53
|
-
export {};
|
|
54
|
-
//# sourceMappingURL=ternSecureNodeMiddleware.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ternSecureNodeMiddleware.d.ts","sourceRoot":"","sources":["../../../../src/server/node/ternSecureNodeMiddleware.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAC,WAAW,EAAE,MAAM,aAAa,CAAC;AAW9D,OAAO,KAAK,EAAE,QAAQ,EACpB,sBAAsB,EACtB,0BAA0B,EAC1B,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAElB,KAAK,gBAAgB,GAAG;IAAE,aAAa,CAAC,EAAE,MAAM,GAAG,GAAG,GAAG,IAAI,CAAA;CAAE,CAAC;AAChE,MAAM,MAAM,WAAW,CAAC,UAAU,IAAI,CAAC,MAAM,CAAC,EAAE,gBAAgB,KAAK,UAAU,CAAC;AAEhF,MAAM,MAAM,UAAU,GAAG;IACvB,IAAI,EAAE,QAAQ,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB,CAAC;AAEF,MAAM,WAAW,cAAe,SAAQ,UAAU;IAChD,IAAI,OAAO,CAAC,oBAAoB,CAAC,CAAC;IAClC,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,KAAK,iBAAiB,GAAG,CACvB,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,KAC1B,oBAAoB,CAAC;AAE1B,MAAM,MAAM,oBAAoB,GAAG,UAAU,GAAG;IAC9C,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,gBAAgB,EAAE,WAAW,CAAC,QAAQ,CAAC,CAAC;CACzC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,EAAE,MAC3C,SAAS,WAAW,KAAG,OAUhC,CAAC;AA8BF,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AACD,KAAK,yBAAyB,GAAG,CAC/B,GAAG,EAAE,WAAW,KACb,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;AAEpD,UAAU,oBAAoB;IAC5B;;;OAGG;IACH,CAAC,OAAO,EAAE,iBAAiB,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAE1E;;;OAGG;IACH,CACE,OAAO,EAAE,iBAAiB,EAC1B,OAAO,CAAC,EAAE,yBAAyB,GAClC,cAAc,CAAC;IAElB;;;OAGG;IACH,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,cAAc,CAAC;IAC9C;;;OAGG;IACH,CACE,OAAO,EAAE,0BAA0B,EACnC,KAAK,EAAE,sBAAsB,GAC5B,oBAAoB,CAAC;CACzB;AAED,eAAO,MAAM,oBAAoB,EAmF3B,oBAAoB,CAAC"}
|