@tern-secure/nextjs 5.0.1 → 5.1.1
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/index.js +3 -0
- package/dist/cjs/app-router/admin/index.js.map +1 -1
- package/dist/cjs/app-router/admin/sessionHandler.js +74 -0
- package/dist/cjs/app-router/admin/sessionHandler.js.map +1 -0
- package/dist/cjs/app-router/client/TernSecureProvider.js +2 -2
- package/dist/cjs/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/cjs/server/auth.js.map +1 -1
- package/dist/cjs/server/edge-session.js +8 -10
- package/dist/cjs/server/edge-session.js.map +1 -1
- package/dist/cjs/server/ternSecureMiddleware.js +43 -25
- package/dist/cjs/server/ternSecureMiddleware.js.map +1 -1
- package/dist/cjs/server/types.js.map +1 -1
- package/dist/cjs/utils/admin-init.js +1 -57
- package/dist/cjs/utils/admin-init.js.map +1 -1
- package/dist/cjs/utils/allNextProviderProps.js +8 -2
- package/dist/cjs/utils/allNextProviderProps.js.map +1 -1
- package/dist/cjs/utils/tern-ui-script.js +4 -2
- package/dist/cjs/utils/tern-ui-script.js.map +1 -1
- package/dist/cjs/utils/ternsecure-sw.js +54 -0
- package/dist/cjs/utils/ternsecure-sw.js.map +1 -0
- package/dist/esm/app-router/admin/index.js +2 -0
- package/dist/esm/app-router/admin/index.js.map +1 -1
- package/dist/esm/app-router/admin/sessionHandler.js +50 -0
- package/dist/esm/app-router/admin/sessionHandler.js.map +1 -0
- package/dist/esm/app-router/client/TernSecureProvider.js +2 -2
- package/dist/esm/app-router/client/TernSecureProvider.js.map +1 -1
- package/dist/esm/server/auth.js.map +1 -1
- package/dist/esm/server/edge-session.js +8 -10
- package/dist/esm/server/edge-session.js.map +1 -1
- package/dist/esm/server/ternSecureMiddleware.js +43 -25
- package/dist/esm/server/ternSecureMiddleware.js.map +1 -1
- package/dist/esm/utils/admin-init.js +1 -22
- package/dist/esm/utils/admin-init.js.map +1 -1
- package/dist/esm/utils/allNextProviderProps.js +8 -2
- package/dist/esm/utils/allNextProviderProps.js.map +1 -1
- package/dist/esm/utils/tern-ui-script.js +4 -2
- package/dist/esm/utils/tern-ui-script.js.map +1 -1
- package/dist/esm/utils/ternsecure-sw.js +30 -0
- package/dist/esm/utils/ternsecure-sw.js.map +1 -0
- package/dist/types/app-router/admin/index.d.ts +1 -0
- package/dist/types/app-router/admin/index.d.ts.map +1 -1
- package/dist/types/app-router/admin/sessionHandler.d.ts +3 -0
- package/dist/types/app-router/admin/sessionHandler.d.ts.map +1 -0
- package/dist/types/server/auth.d.ts +4 -4
- package/dist/types/server/auth.d.ts.map +1 -1
- package/dist/types/server/edge-session.d.ts.map +1 -1
- package/dist/types/server/ternSecureMiddleware.d.ts +7 -7
- package/dist/types/server/ternSecureMiddleware.d.ts.map +1 -1
- package/dist/types/server/types.d.ts +15 -3
- package/dist/types/server/types.d.ts.map +1 -1
- package/dist/types/utils/admin-init.d.ts +1 -4
- package/dist/types/utils/admin-init.d.ts.map +1 -1
- package/dist/types/utils/allNextProviderProps.d.ts.map +1 -1
- package/dist/types/utils/tern-ui-script.d.ts +2 -1
- package/dist/types/utils/tern-ui-script.d.ts.map +1 -1
- package/dist/types/utils/ternsecure-sw.d.ts +8 -0
- package/dist/types/utils/ternsecure-sw.d.ts.map +1 -0
- package/package.json +5 -5
- package/dist/cjs/app-router/admin/sessionTernSecure.js +0 -165
- package/dist/cjs/app-router/admin/sessionTernSecure.js.map +0 -1
- package/dist/esm/app-router/admin/sessionTernSecure.js +0 -135
- package/dist/esm/app-router/admin/sessionTernSecure.js.map +0 -1
- package/dist/types/app-router/admin/sessionTernSecure.d.ts +0 -39
- package/dist/types/app-router/admin/sessionTernSecure.d.ts.map +0 -1
|
@@ -2,7 +2,8 @@ import type { TernSecureNextProps } from '../types';
|
|
|
2
2
|
type TernUIScriptProps = Pick<TernSecureNextProps, 'customDomain' | 'proxyUrl'> & {
|
|
3
3
|
version?: string;
|
|
4
4
|
nonce?: string;
|
|
5
|
+
router: 'app' | 'pages';
|
|
5
6
|
};
|
|
6
|
-
export declare function TernUIScript({ customDomain, proxyUrl, version, nonce, }: TernUIScriptProps): import("react/jsx-runtime").JSX.Element | null;
|
|
7
|
+
export declare function TernUIScript({ customDomain, proxyUrl, version, nonce, router }: TernUIScriptProps): import("react/jsx-runtime").JSX.Element | null;
|
|
7
8
|
export {};
|
|
8
9
|
//# sourceMappingURL=tern-ui-script.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tern-ui-script.d.ts","sourceRoot":"","sources":["../../../src/utils/tern-ui-script.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAKnD,KAAK,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"tern-ui-script.d.ts","sourceRoot":"","sources":["../../../src/utils/tern-ui-script.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAA;AAKnD,KAAK,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EAAE,cAAc,GAAG,UAAU,CAAC,GAAG;IAC9E,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,OAAO,CAAC;CAC3B,CAAA;AAOD,wBAAgB,YAAY,CAAC,EACzB,YAAY,EACZ,QAAQ,EACR,OAAO,EACP,KAAK,EACL,MAAc,EACjB,EAAE,iBAAiB,kDA+BnB"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { TernSecureConfig } from '@tern-secure/types';
|
|
2
|
+
interface TernUIServiceWorkerProps {
|
|
3
|
+
ternSecureConfig?: TernSecureConfig;
|
|
4
|
+
baseUrl?: string;
|
|
5
|
+
}
|
|
6
|
+
export declare const TernUIServiceWorker: React.FC<TernUIServiceWorkerProps>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=ternsecure-sw.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ternsecure-sw.d.ts","sourceRoot":"","sources":["../../../src/utils/ternsecure-sw.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAG3D,UAAU,wBAAwB;IAC9B,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,mBAAmB,EAAE,KAAK,CAAC,EAAE,CAAC,wBAAwB,CAyBlE,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tern-secure/nextjs",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.1.1",
|
|
4
4
|
"publishConfig": {
|
|
5
5
|
"access": "public"
|
|
6
6
|
},
|
|
@@ -54,12 +54,12 @@
|
|
|
54
54
|
"dependencies": {
|
|
55
55
|
"jose": "^5.9.6",
|
|
56
56
|
"tslib": "2.4.1",
|
|
57
|
-
"@tern-secure/
|
|
58
|
-
"@tern-secure/shared": "1.1.
|
|
59
|
-
"@tern-secure/types": "1.0.
|
|
57
|
+
"@tern-secure/backend": "1.1.0",
|
|
58
|
+
"@tern-secure/shared": "1.1.1",
|
|
59
|
+
"@tern-secure/types": "1.0.2",
|
|
60
|
+
"@tern-secure/react": "1.1.0"
|
|
60
61
|
},
|
|
61
62
|
"peerDependencies": {
|
|
62
|
-
"firebase-admin": "^12.7.0",
|
|
63
63
|
"next": "^13.0.0 || ^14.0.0 || ^15.0.0",
|
|
64
64
|
"react": "^19",
|
|
65
65
|
"react-dom": "^19"
|
|
@@ -1,165 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
"use server";
|
|
3
|
-
var __defProp = Object.defineProperty;
|
|
4
|
-
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
-
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
-
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
7
|
-
var __export = (target, all) => {
|
|
8
|
-
for (var name in all)
|
|
9
|
-
__defProp(target, name, { get: all[name], enumerable: true });
|
|
10
|
-
};
|
|
11
|
-
var __copyProps = (to, from, except, desc) => {
|
|
12
|
-
if (from && typeof from === "object" || typeof from === "function") {
|
|
13
|
-
for (let key of __getOwnPropNames(from))
|
|
14
|
-
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
15
|
-
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
16
|
-
}
|
|
17
|
-
return to;
|
|
18
|
-
};
|
|
19
|
-
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
20
|
-
var sessionTernSecure_exports = {};
|
|
21
|
-
__export(sessionTernSecure_exports, {
|
|
22
|
-
clearSessionCookie: () => clearSessionCookie,
|
|
23
|
-
createSessionCookie: () => createSessionCookie,
|
|
24
|
-
getIdToken: () => getIdToken,
|
|
25
|
-
getServerSessionCookie: () => getServerSessionCookie,
|
|
26
|
-
setServerSession: () => setServerSession,
|
|
27
|
-
verifyTernIdToken: () => verifyTernIdToken,
|
|
28
|
-
verifyTernSessionCookie: () => verifyTernSessionCookie
|
|
29
|
-
});
|
|
30
|
-
module.exports = __toCommonJS(sessionTernSecure_exports);
|
|
31
|
-
var import_headers = require("next/headers");
|
|
32
|
-
var import_admin_init = require("../../utils/admin-init");
|
|
33
|
-
var import_errors = require("../../errors");
|
|
34
|
-
async function createSessionCookie(idToken) {
|
|
35
|
-
try {
|
|
36
|
-
const expiresIn = 60 * 60 * 24 * 5 * 1e3;
|
|
37
|
-
const sessionCookie = await import_admin_init.adminTernSecureAuth.createSessionCookie(idToken, { expiresIn });
|
|
38
|
-
const cookieStore = await (0, import_headers.cookies)();
|
|
39
|
-
cookieStore.set("_session_cookie", sessionCookie, {
|
|
40
|
-
maxAge: expiresIn,
|
|
41
|
-
httpOnly: true,
|
|
42
|
-
secure: process.env.NODE_ENV === "production",
|
|
43
|
-
path: "/"
|
|
44
|
-
});
|
|
45
|
-
return { success: true, message: "Session created" };
|
|
46
|
-
} catch (error) {
|
|
47
|
-
return { success: false, message: "Failed to create session" };
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
|
-
async function getServerSessionCookie() {
|
|
51
|
-
const cookieStore = await (0, import_headers.cookies)();
|
|
52
|
-
const sessionCookie = cookieStore.get("_session_cookie")?.value;
|
|
53
|
-
if (!sessionCookie) {
|
|
54
|
-
throw new Error("No session cookie found");
|
|
55
|
-
}
|
|
56
|
-
try {
|
|
57
|
-
const decondeClaims = await import_admin_init.adminTernSecureAuth.verifySessionCookie(sessionCookie, true);
|
|
58
|
-
return {
|
|
59
|
-
token: sessionCookie,
|
|
60
|
-
userId: decondeClaims.uid
|
|
61
|
-
};
|
|
62
|
-
} catch (error) {
|
|
63
|
-
console.error("Error verifying session:", error);
|
|
64
|
-
throw new Error("Invalid Session");
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
async function getIdToken() {
|
|
68
|
-
const cookieStore = await (0, import_headers.cookies)();
|
|
69
|
-
const token = cookieStore.get("_session_token")?.value;
|
|
70
|
-
if (!token) {
|
|
71
|
-
throw new Error("No session cookie found");
|
|
72
|
-
}
|
|
73
|
-
try {
|
|
74
|
-
const decodedClaims = await import_admin_init.adminTernSecureAuth.verifyIdToken(token);
|
|
75
|
-
return {
|
|
76
|
-
token,
|
|
77
|
-
userId: decodedClaims.uid
|
|
78
|
-
};
|
|
79
|
-
} catch (error) {
|
|
80
|
-
console.error("Error verifying session:", error);
|
|
81
|
-
throw new Error("Invalid Session");
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
async function setServerSession(token) {
|
|
85
|
-
try {
|
|
86
|
-
const cookieStore = await (0, import_headers.cookies)();
|
|
87
|
-
cookieStore.set("_session_token", token, {
|
|
88
|
-
httpOnly: true,
|
|
89
|
-
secure: process.env.NODE_ENV === "production",
|
|
90
|
-
sameSite: "strict",
|
|
91
|
-
maxAge: 60 * 60,
|
|
92
|
-
// 1 hour
|
|
93
|
-
path: "/"
|
|
94
|
-
});
|
|
95
|
-
return { success: true, message: "Session created" };
|
|
96
|
-
} catch {
|
|
97
|
-
return { success: false, message: "Failed to create session" };
|
|
98
|
-
}
|
|
99
|
-
}
|
|
100
|
-
async function verifyTernIdToken(token) {
|
|
101
|
-
try {
|
|
102
|
-
const decodedToken = await import_admin_init.adminTernSecureAuth.verifyIdToken(token);
|
|
103
|
-
return {
|
|
104
|
-
valid: true,
|
|
105
|
-
uid: decodedToken.uid,
|
|
106
|
-
email: decodedToken.email || null,
|
|
107
|
-
authTime: decodedToken.auth_time
|
|
108
|
-
};
|
|
109
|
-
} catch (error) {
|
|
110
|
-
const errorResponse = (0, import_errors.handleFirebaseAuthError)(error);
|
|
111
|
-
return {
|
|
112
|
-
valid: false,
|
|
113
|
-
uid: null,
|
|
114
|
-
email: null,
|
|
115
|
-
error: errorResponse
|
|
116
|
-
};
|
|
117
|
-
}
|
|
118
|
-
}
|
|
119
|
-
async function verifyTernSessionCookie(session) {
|
|
120
|
-
try {
|
|
121
|
-
const res = await import_admin_init.adminTernSecureAuth.verifySessionCookie(session);
|
|
122
|
-
return {
|
|
123
|
-
valid: true,
|
|
124
|
-
uid: res.uid,
|
|
125
|
-
email: res.email || null,
|
|
126
|
-
authTime: res.auth_time
|
|
127
|
-
};
|
|
128
|
-
} catch (error) {
|
|
129
|
-
const errorResponse = (0, import_errors.handleFirebaseAuthError)(error);
|
|
130
|
-
return {
|
|
131
|
-
valid: false,
|
|
132
|
-
uid: null,
|
|
133
|
-
email: null,
|
|
134
|
-
error: errorResponse
|
|
135
|
-
};
|
|
136
|
-
}
|
|
137
|
-
}
|
|
138
|
-
async function clearSessionCookie() {
|
|
139
|
-
const cookieStore = await (0, import_headers.cookies)();
|
|
140
|
-
cookieStore.delete("_session_cookie");
|
|
141
|
-
cookieStore.delete("_session_token");
|
|
142
|
-
cookieStore.delete("_session");
|
|
143
|
-
try {
|
|
144
|
-
const sessionCookie = cookieStore.get("_session_cookie")?.value;
|
|
145
|
-
if (sessionCookie) {
|
|
146
|
-
const decodedClaims = await import_admin_init.adminTernSecureAuth.verifySessionCookie(sessionCookie);
|
|
147
|
-
await import_admin_init.adminTernSecureAuth.revokeRefreshTokens(decodedClaims.uid);
|
|
148
|
-
}
|
|
149
|
-
return { success: true, message: "Session cleared successfully" };
|
|
150
|
-
} catch (error) {
|
|
151
|
-
console.error("Error clearing session:", error);
|
|
152
|
-
return { success: true, message: "Session cookies cleared" };
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
// Annotate the CommonJS export names for ESM import in node:
|
|
156
|
-
0 && (module.exports = {
|
|
157
|
-
clearSessionCookie,
|
|
158
|
-
createSessionCookie,
|
|
159
|
-
getIdToken,
|
|
160
|
-
getServerSessionCookie,
|
|
161
|
-
setServerSession,
|
|
162
|
-
verifyTernIdToken,
|
|
163
|
-
verifyTernSessionCookie
|
|
164
|
-
});
|
|
165
|
-
//# sourceMappingURL=sessionTernSecure.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app-router/admin/sessionTernSecure.ts"],"sourcesContent":["'use server'\n\nimport { cookies } from 'next/headers';\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\nimport { handleFirebaseAuthError, type AuthErrorResponse } from '../../errors';\n\ninterface FirebaseAuthError extends Error {\n code?: string;\n}\n\nexport interface User {\n uid: string | null;\n email: string | null;\n }\n\nexport interface Session {\n user: User | null;\n token: string | null;\n error: Error | null;\n}\n\ninterface TernVerificationResult extends User {\n valid: boolean\n authTime?: number\n error?: AuthErrorResponse\n}\n\nexport async function createSessionCookie(idToken: string) {\n try {\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\n\n const cookieStore = await cookies();\n cookieStore.set('_session_cookie', sessionCookie, {\n maxAge: expiresIn,\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n return { success: true, message: 'Session created' };\n } catch (error) {\n return { success: false, message: 'Failed to create session' };\n }\n}\n\n\n\nexport async function getServerSessionCookie() {\n const cookieStore = await cookies();\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\n\n if (!sessionCookie) {\n throw new Error('No session cookie found')\n }\n \n try {\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\n return {\n token: sessionCookie,\n userId: decondeClaims.uid\n }\n } catch (error) {\n console.error('Error verifying session:', error)\n throw new Error('Invalid Session')\n }\n}\n\n\nexport async function getIdToken() {\n const cookieStore = await cookies();\n const token = cookieStore.get('_session_token')?.value;\n\n if (!token) {\n throw new Error('No session cookie found')\n }\n \n try {\n const decodedClaims = await adminAuth.verifyIdToken(token)\n return {\n token: token,\n userId: decodedClaims.uid\n }\n } catch (error) {\n console.error('Error verifying session:', error)\n throw new Error('Invalid Session')\n }\n}\n\nexport async function setServerSession(token: string) {\n try {\n const cookieStore = await cookies();\n cookieStore.set('_session_token', token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n sameSite: 'strict',\n maxAge: 60 * 60, // 1 hour\n path: '/',\n });\n return { success: true, message: 'Session created' };\n } catch {\n return { success: false, message: 'Failed to create session' };\n }\n}\n\n export async function verifyTernIdToken(token: string): Promise<TernVerificationResult> {\n try {\n const decodedToken = await adminAuth.verifyIdToken(token);\n return {\n valid: true,\n uid: decodedToken.uid,\n email: decodedToken.email || null,\n authTime: decodedToken.auth_time\n };\n } catch (error) {\n const errorResponse = handleFirebaseAuthError(error)\n return {\n valid: false,\n uid: null,\n email: null,\n error: errorResponse\n };\n }\n }\n \n\n export async function verifyTernSessionCookie(session: string): Promise<TernVerificationResult>{\n try {\n const res = await adminAuth.verifySessionCookie(session);\n return { \n valid: true, \n uid: res.uid,\n email: res.email || null,\n authTime: res.auth_time\n };\n } catch (error) {\n const errorResponse = handleFirebaseAuthError(error)\n return {\n valid: false, \n uid: null,\n email: null,\n error: errorResponse\n };\n }\n }\n\n\n export async function clearSessionCookie() {\n const cookieStore = await cookies()\n \n cookieStore.delete('_session_cookie')\n cookieStore.delete('_session_token')\n cookieStore.delete('_session')\n \n try {\n // Verify if there's an active session before revoking\n const sessionCookie = cookieStore.get('_session_cookie')?.value\n if (sessionCookie) {\n // Get the decoded claims to get the user's ID\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie)\n \n // Revoke all sessions for the user\n await adminAuth.revokeRefreshTokens(decodedClaims.uid)\n }\n \n return { success: true, message: 'Session cleared successfully' }\n } catch (error) {\n console.error('Error clearing session:', error)\n // Still return success even if revoking fails, as cookies are cleared\n return { success: true, message: 'Session cookies cleared' }\n }\n }\n\n\n\n/*\n export async function GET(request: NextRequest) {\n const cookieStore = await cookies();\n const sessionCookie = cookieStore.get('session')?.value\n \n if (!sessionCookie) {\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\n }\n \n try {\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\n } catch (error) {\n console.error('Error verifying session cookie:', error)\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\n }\n }\n\n*/"],"mappings":"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","names":["adminAuth"]}
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
"use server";
|
|
2
|
-
import { cookies } from "next/headers";
|
|
3
|
-
import { adminTernSecureAuth as adminAuth } from "../../utils/admin-init";
|
|
4
|
-
import { handleFirebaseAuthError } from "../../errors";
|
|
5
|
-
async function createSessionCookie(idToken) {
|
|
6
|
-
try {
|
|
7
|
-
const expiresIn = 60 * 60 * 24 * 5 * 1e3;
|
|
8
|
-
const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });
|
|
9
|
-
const cookieStore = await cookies();
|
|
10
|
-
cookieStore.set("_session_cookie", sessionCookie, {
|
|
11
|
-
maxAge: expiresIn,
|
|
12
|
-
httpOnly: true,
|
|
13
|
-
secure: process.env.NODE_ENV === "production",
|
|
14
|
-
path: "/"
|
|
15
|
-
});
|
|
16
|
-
return { success: true, message: "Session created" };
|
|
17
|
-
} catch (error) {
|
|
18
|
-
return { success: false, message: "Failed to create session" };
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
async function getServerSessionCookie() {
|
|
22
|
-
const cookieStore = await cookies();
|
|
23
|
-
const sessionCookie = cookieStore.get("_session_cookie")?.value;
|
|
24
|
-
if (!sessionCookie) {
|
|
25
|
-
throw new Error("No session cookie found");
|
|
26
|
-
}
|
|
27
|
-
try {
|
|
28
|
-
const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie, true);
|
|
29
|
-
return {
|
|
30
|
-
token: sessionCookie,
|
|
31
|
-
userId: decondeClaims.uid
|
|
32
|
-
};
|
|
33
|
-
} catch (error) {
|
|
34
|
-
console.error("Error verifying session:", error);
|
|
35
|
-
throw new Error("Invalid Session");
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
async function getIdToken() {
|
|
39
|
-
const cookieStore = await cookies();
|
|
40
|
-
const token = cookieStore.get("_session_token")?.value;
|
|
41
|
-
if (!token) {
|
|
42
|
-
throw new Error("No session cookie found");
|
|
43
|
-
}
|
|
44
|
-
try {
|
|
45
|
-
const decodedClaims = await adminAuth.verifyIdToken(token);
|
|
46
|
-
return {
|
|
47
|
-
token,
|
|
48
|
-
userId: decodedClaims.uid
|
|
49
|
-
};
|
|
50
|
-
} catch (error) {
|
|
51
|
-
console.error("Error verifying session:", error);
|
|
52
|
-
throw new Error("Invalid Session");
|
|
53
|
-
}
|
|
54
|
-
}
|
|
55
|
-
async function setServerSession(token) {
|
|
56
|
-
try {
|
|
57
|
-
const cookieStore = await cookies();
|
|
58
|
-
cookieStore.set("_session_token", token, {
|
|
59
|
-
httpOnly: true,
|
|
60
|
-
secure: process.env.NODE_ENV === "production",
|
|
61
|
-
sameSite: "strict",
|
|
62
|
-
maxAge: 60 * 60,
|
|
63
|
-
// 1 hour
|
|
64
|
-
path: "/"
|
|
65
|
-
});
|
|
66
|
-
return { success: true, message: "Session created" };
|
|
67
|
-
} catch {
|
|
68
|
-
return { success: false, message: "Failed to create session" };
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
async function verifyTernIdToken(token) {
|
|
72
|
-
try {
|
|
73
|
-
const decodedToken = await adminAuth.verifyIdToken(token);
|
|
74
|
-
return {
|
|
75
|
-
valid: true,
|
|
76
|
-
uid: decodedToken.uid,
|
|
77
|
-
email: decodedToken.email || null,
|
|
78
|
-
authTime: decodedToken.auth_time
|
|
79
|
-
};
|
|
80
|
-
} catch (error) {
|
|
81
|
-
const errorResponse = handleFirebaseAuthError(error);
|
|
82
|
-
return {
|
|
83
|
-
valid: false,
|
|
84
|
-
uid: null,
|
|
85
|
-
email: null,
|
|
86
|
-
error: errorResponse
|
|
87
|
-
};
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
async function verifyTernSessionCookie(session) {
|
|
91
|
-
try {
|
|
92
|
-
const res = await adminAuth.verifySessionCookie(session);
|
|
93
|
-
return {
|
|
94
|
-
valid: true,
|
|
95
|
-
uid: res.uid,
|
|
96
|
-
email: res.email || null,
|
|
97
|
-
authTime: res.auth_time
|
|
98
|
-
};
|
|
99
|
-
} catch (error) {
|
|
100
|
-
const errorResponse = handleFirebaseAuthError(error);
|
|
101
|
-
return {
|
|
102
|
-
valid: false,
|
|
103
|
-
uid: null,
|
|
104
|
-
email: null,
|
|
105
|
-
error: errorResponse
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
}
|
|
109
|
-
async function clearSessionCookie() {
|
|
110
|
-
const cookieStore = await cookies();
|
|
111
|
-
cookieStore.delete("_session_cookie");
|
|
112
|
-
cookieStore.delete("_session_token");
|
|
113
|
-
cookieStore.delete("_session");
|
|
114
|
-
try {
|
|
115
|
-
const sessionCookie = cookieStore.get("_session_cookie")?.value;
|
|
116
|
-
if (sessionCookie) {
|
|
117
|
-
const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie);
|
|
118
|
-
await adminAuth.revokeRefreshTokens(decodedClaims.uid);
|
|
119
|
-
}
|
|
120
|
-
return { success: true, message: "Session cleared successfully" };
|
|
121
|
-
} catch (error) {
|
|
122
|
-
console.error("Error clearing session:", error);
|
|
123
|
-
return { success: true, message: "Session cookies cleared" };
|
|
124
|
-
}
|
|
125
|
-
}
|
|
126
|
-
export {
|
|
127
|
-
clearSessionCookie,
|
|
128
|
-
createSessionCookie,
|
|
129
|
-
getIdToken,
|
|
130
|
-
getServerSessionCookie,
|
|
131
|
-
setServerSession,
|
|
132
|
-
verifyTernIdToken,
|
|
133
|
-
verifyTernSessionCookie
|
|
134
|
-
};
|
|
135
|
-
//# sourceMappingURL=sessionTernSecure.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/app-router/admin/sessionTernSecure.ts"],"sourcesContent":["'use server'\n\nimport { cookies } from 'next/headers';\nimport { adminTernSecureAuth as adminAuth } from '../../utils/admin-init';\nimport { handleFirebaseAuthError, type AuthErrorResponse } from '../../errors';\n\ninterface FirebaseAuthError extends Error {\n code?: string;\n}\n\nexport interface User {\n uid: string | null;\n email: string | null;\n }\n\nexport interface Session {\n user: User | null;\n token: string | null;\n error: Error | null;\n}\n\ninterface TernVerificationResult extends User {\n valid: boolean\n authTime?: number\n error?: AuthErrorResponse\n}\n\nexport async function createSessionCookie(idToken: string) {\n try {\n const expiresIn = 60 * 60 * 24 * 5 * 1000;\n const sessionCookie = await adminAuth.createSessionCookie(idToken, { expiresIn });\n\n const cookieStore = await cookies();\n cookieStore.set('_session_cookie', sessionCookie, {\n maxAge: expiresIn,\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n path: '/',\n });\n return { success: true, message: 'Session created' };\n } catch (error) {\n return { success: false, message: 'Failed to create session' };\n }\n}\n\n\n\nexport async function getServerSessionCookie() {\n const cookieStore = await cookies();\n const sessionCookie = cookieStore.get('_session_cookie')?.value;\n\n if (!sessionCookie) {\n throw new Error('No session cookie found')\n }\n \n try {\n const decondeClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\n return {\n token: sessionCookie,\n userId: decondeClaims.uid\n }\n } catch (error) {\n console.error('Error verifying session:', error)\n throw new Error('Invalid Session')\n }\n}\n\n\nexport async function getIdToken() {\n const cookieStore = await cookies();\n const token = cookieStore.get('_session_token')?.value;\n\n if (!token) {\n throw new Error('No session cookie found')\n }\n \n try {\n const decodedClaims = await adminAuth.verifyIdToken(token)\n return {\n token: token,\n userId: decodedClaims.uid\n }\n } catch (error) {\n console.error('Error verifying session:', error)\n throw new Error('Invalid Session')\n }\n}\n\nexport async function setServerSession(token: string) {\n try {\n const cookieStore = await cookies();\n cookieStore.set('_session_token', token, {\n httpOnly: true,\n secure: process.env.NODE_ENV === 'production',\n sameSite: 'strict',\n maxAge: 60 * 60, // 1 hour\n path: '/',\n });\n return { success: true, message: 'Session created' };\n } catch {\n return { success: false, message: 'Failed to create session' };\n }\n}\n\n export async function verifyTernIdToken(token: string): Promise<TernVerificationResult> {\n try {\n const decodedToken = await adminAuth.verifyIdToken(token);\n return {\n valid: true,\n uid: decodedToken.uid,\n email: decodedToken.email || null,\n authTime: decodedToken.auth_time\n };\n } catch (error) {\n const errorResponse = handleFirebaseAuthError(error)\n return {\n valid: false,\n uid: null,\n email: null,\n error: errorResponse\n };\n }\n }\n \n\n export async function verifyTernSessionCookie(session: string): Promise<TernVerificationResult>{\n try {\n const res = await adminAuth.verifySessionCookie(session);\n return { \n valid: true, \n uid: res.uid,\n email: res.email || null,\n authTime: res.auth_time\n };\n } catch (error) {\n const errorResponse = handleFirebaseAuthError(error)\n return {\n valid: false, \n uid: null,\n email: null,\n error: errorResponse\n };\n }\n }\n\n\n export async function clearSessionCookie() {\n const cookieStore = await cookies()\n \n cookieStore.delete('_session_cookie')\n cookieStore.delete('_session_token')\n cookieStore.delete('_session')\n \n try {\n // Verify if there's an active session before revoking\n const sessionCookie = cookieStore.get('_session_cookie')?.value\n if (sessionCookie) {\n // Get the decoded claims to get the user's ID\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie)\n \n // Revoke all sessions for the user\n await adminAuth.revokeRefreshTokens(decodedClaims.uid)\n }\n \n return { success: true, message: 'Session cleared successfully' }\n } catch (error) {\n console.error('Error clearing session:', error)\n // Still return success even if revoking fails, as cookies are cleared\n return { success: true, message: 'Session cookies cleared' }\n }\n }\n\n\n\n/*\n export async function GET(request: NextRequest) {\n const cookieStore = await cookies();\n const sessionCookie = cookieStore.get('session')?.value\n \n if (!sessionCookie) {\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\n }\n \n try {\n const decodedClaims = await adminAuth.verifySessionCookie(sessionCookie, true)\n return NextResponse.json({ isAuthenticated: true, user: decodedClaims }, { status: 200 })\n } catch (error) {\n console.error('Error verifying session cookie:', error)\n return NextResponse.json({ isAuthenticated: false }, { status: 401 })\n }\n }\n\n*/"],"mappings":"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","names":[]}
|
|
@@ -1,39 +0,0 @@
|
|
|
1
|
-
import { type AuthErrorResponse } from '../../errors';
|
|
2
|
-
export interface User {
|
|
3
|
-
uid: string | null;
|
|
4
|
-
email: string | null;
|
|
5
|
-
}
|
|
6
|
-
export interface Session {
|
|
7
|
-
user: User | null;
|
|
8
|
-
token: string | null;
|
|
9
|
-
error: Error | null;
|
|
10
|
-
}
|
|
11
|
-
interface TernVerificationResult extends User {
|
|
12
|
-
valid: boolean;
|
|
13
|
-
authTime?: number;
|
|
14
|
-
error?: AuthErrorResponse;
|
|
15
|
-
}
|
|
16
|
-
export declare function createSessionCookie(idToken: string): Promise<{
|
|
17
|
-
success: boolean;
|
|
18
|
-
message: string;
|
|
19
|
-
}>;
|
|
20
|
-
export declare function getServerSessionCookie(): Promise<{
|
|
21
|
-
token: string;
|
|
22
|
-
userId: string;
|
|
23
|
-
}>;
|
|
24
|
-
export declare function getIdToken(): Promise<{
|
|
25
|
-
token: string;
|
|
26
|
-
userId: string;
|
|
27
|
-
}>;
|
|
28
|
-
export declare function setServerSession(token: string): Promise<{
|
|
29
|
-
success: boolean;
|
|
30
|
-
message: string;
|
|
31
|
-
}>;
|
|
32
|
-
export declare function verifyTernIdToken(token: string): Promise<TernVerificationResult>;
|
|
33
|
-
export declare function verifyTernSessionCookie(session: string): Promise<TernVerificationResult>;
|
|
34
|
-
export declare function clearSessionCookie(): Promise<{
|
|
35
|
-
success: boolean;
|
|
36
|
-
message: string;
|
|
37
|
-
}>;
|
|
38
|
-
export {};
|
|
39
|
-
//# sourceMappingURL=sessionTernSecure.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"sessionTernSecure.d.ts","sourceRoot":"","sources":["../../../../src/app-router/admin/sessionTernSecure.ts"],"names":[],"mappings":"AAIA,OAAO,EAA2B,KAAK,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAM/E,MAAM,WAAW,IAAI;IACjB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAEH,MAAM,WAAW,OAAO;IACpB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;CACvB;AAED,UAAU,sBAAuB,SAAQ,IAAI;IAC3C,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,KAAK,CAAC,EAAE,iBAAiB,CAAA;CAC1B;AAED,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,MAAM;;;GAgBxD;AAID,wBAAsB,sBAAsB;;;GAkB3C;AAGD,wBAAsB,UAAU;;;GAkB/B;AAED,wBAAsB,gBAAgB,CAAC,KAAK,EAAE,MAAM;;;GAcnD;AAEC,wBAAsB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkBtF;AAGD,wBAAsB,uBAAuB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAkB9F;AAGD,wBAAsB,kBAAkB;;;GAwBvC"}
|