firebase-admin-edge 1.0.22 → 1.0.24
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 +58 -20
- package/dist/auth/cache-types.d.ts +7 -0
- package/dist/auth/cache-types.d.ts.map +1 -0
- package/dist/auth/cache-types.js +2 -0
- package/dist/auth/cache-types.js.map +1 -0
- package/dist/auth/cookie-types.d.ts +4 -0
- package/dist/auth/cookie-types.d.ts.map +1 -1
- package/dist/auth/firebase-admin-auth.d.ts +82 -11
- package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
- package/dist/auth/firebase-admin-auth.js +134 -35
- package/dist/auth/firebase-admin-auth.js.map +1 -1
- package/dist/auth/firebase-admin-auth.test.js +39 -51
- package/dist/auth/firebase-admin-auth.test.js.map +1 -1
- package/dist/auth/firebase-auth-endpoints.d.ts +10 -4
- package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
- package/dist/auth/firebase-auth-endpoints.js +10 -5
- package/dist/auth/firebase-auth-endpoints.js.map +1 -1
- package/dist/auth/firebase-auth-endpoints.test.js +8 -8
- package/dist/auth/firebase-auth-endpoints.test.js.map +1 -1
- package/dist/auth/firebase-auth.d.ts +33 -0
- package/dist/auth/firebase-auth.d.ts.map +1 -1
- package/dist/auth/firebase-auth.js +33 -0
- package/dist/auth/firebase-auth.js.map +1 -1
- package/dist/auth/firebase-jwt.d.ts.map +1 -1
- package/dist/auth/firebase-jwt.js +1 -0
- package/dist/auth/firebase-jwt.js.map +1 -1
- package/dist/auth/firebase-types.d.ts +5 -29
- package/dist/auth/firebase-types.d.ts.map +1 -1
- package/dist/auth/google-oauth.d.ts +5 -10
- package/dist/auth/google-oauth.d.ts.map +1 -1
- package/dist/auth/google-oauth.js +12 -1
- package/dist/auth/google-oauth.js.map +1 -1
- package/dist/firebase-edge-errors.d.ts +8 -0
- package/dist/firebase-edge-errors.d.ts.map +1 -1
- package/dist/firebase-edge-errors.js +8 -0
- package/dist/firebase-edge-errors.js.map +1 -1
- package/dist/firebase-edge-server.d.ts +18 -12
- package/dist/firebase-edge-server.d.ts.map +1 -1
- package/dist/firebase-edge-server.js +115 -43
- package/dist/firebase-edge-server.js.map +1 -1
- package/dist/firebase-edge-server.test.js +5 -5
- package/dist/firebase-edge-server.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/utils/token-cache.d.ts +9 -0
- package/dist/utils/token-cache.d.ts.map +1 -0
- package/dist/utils/token-cache.js +27 -0
- package/dist/utils/token-cache.js.map +1 -0
- package/package.json +2 -1
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type { CookieConfig, CookieOptions } from './auth/cookie-types.js';
|
|
2
2
|
import { FirebaseAdminAuth } from './auth/firebase-admin-auth.js';
|
|
3
3
|
import { FirebaseAuth } from './auth/firebase-auth.js';
|
|
4
4
|
import type { FirebaseConfig, ServiceAccount } from './auth/firebase-types.js';
|
|
5
5
|
import { FirebaseEdgeError } from './auth/errors.js';
|
|
6
|
+
import type { CacheConfig } from './auth/cache-types.js';
|
|
6
7
|
/**
|
|
7
8
|
* Official Firebase OAuth providers
|
|
8
9
|
*/
|
|
@@ -12,11 +13,6 @@ type ProviderConfig = Partial<Record<ProviderList, {
|
|
|
12
13
|
client_id: string;
|
|
13
14
|
client_secret: string;
|
|
14
15
|
}>>;
|
|
15
|
-
type CookieConfig = {
|
|
16
|
-
getSession: GetSession;
|
|
17
|
-
saveSession: SetSession;
|
|
18
|
-
sessionName?: string;
|
|
19
|
-
};
|
|
20
16
|
/**
|
|
21
17
|
* Creates a Firebase Edge Server for authentication and session management in edge environments.
|
|
22
18
|
*
|
|
@@ -24,16 +20,26 @@ type CookieConfig = {
|
|
|
24
20
|
* @param config.serviceAccount Firebase service account for admin operations
|
|
25
21
|
* @param config.firebaseConfig Firebase client configuration
|
|
26
22
|
* @param config.providers OAuth provider configurations (Google, GitHub, etc.)
|
|
27
|
-
* @param config.cookies Cookie management functions
|
|
23
|
+
* @param config.cookies Cookie management functions (getSession, saveSession)
|
|
24
|
+
* @param config.redirectUri OAuth callback redirect URI
|
|
25
|
+
* @param config.cache Optional cache implementation for token caching
|
|
26
|
+
* @param config.cacheName Optional cache key name for token storage
|
|
27
|
+
* @param config.cookieName Optional custom session cookie name (defaults to '__session')
|
|
28
|
+
* @param config.cookieOptions Optional cookie configuration overrides
|
|
28
29
|
* @param config.tenantId Optional Firebase Auth tenant ID for multi-tenancy
|
|
30
|
+
* @param config.autoLinkProviders Optional flag to automatically link accounts with same email
|
|
29
31
|
* @param config.fetch Optional custom fetch implementation
|
|
30
|
-
* @returns Object with authentication methods
|
|
32
|
+
* @returns Object with authentication methods (auth, adminAuth, signOut, getUser, getGoogleLoginURL, getGitHubLoginURL, signInWithCallback, getToken)
|
|
31
33
|
*/
|
|
32
|
-
export declare function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, providers, cookies, tenantId, redirectUri, autoLinkProviders, fetch }: {
|
|
34
|
+
export declare function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, providers, cookies, cookieName, cookieOptions, cache, cacheName, tenantId, redirectUri, autoLinkProviders, fetch }: {
|
|
33
35
|
serviceAccount: ServiceAccount;
|
|
34
36
|
firebaseConfig: FirebaseConfig;
|
|
35
37
|
providers: ProviderConfig;
|
|
36
38
|
cookies: CookieConfig;
|
|
39
|
+
cache?: CacheConfig;
|
|
40
|
+
cacheName?: string;
|
|
41
|
+
cookieName?: string;
|
|
42
|
+
cookieOptions?: Partial<CookieOptions>;
|
|
37
43
|
redirectUri: string;
|
|
38
44
|
tenantId?: string;
|
|
39
45
|
autoLinkProviders?: boolean;
|
|
@@ -47,7 +53,7 @@ export declare function createFirebaseEdgeServer({ serviceAccount, firebaseConfi
|
|
|
47
53
|
error: null;
|
|
48
54
|
} | {
|
|
49
55
|
data: null;
|
|
50
|
-
error:
|
|
56
|
+
error: FirebaseEdgeError;
|
|
51
57
|
} | {
|
|
52
58
|
data: import("./auth/firebase-types.js").FirebaseIdTokenPayload;
|
|
53
59
|
error: null;
|
|
@@ -61,7 +67,7 @@ export declare function createFirebaseEdgeServer({ serviceAccount, firebaseConfi
|
|
|
61
67
|
customParameters?: Record<string, string>;
|
|
62
68
|
addScopes?: string[];
|
|
63
69
|
}) => Promise<string>;
|
|
64
|
-
signInWithCallback: (url: URL) => Promise<{
|
|
70
|
+
signInWithCallback: (url: URL, expiresIn_ms?: number) => Promise<{
|
|
65
71
|
error: FirebaseEdgeError;
|
|
66
72
|
data?: undefined;
|
|
67
73
|
} | {
|
|
@@ -70,7 +76,7 @@ export declare function createFirebaseEdgeServer({ serviceAccount, firebaseConfi
|
|
|
70
76
|
}>;
|
|
71
77
|
getToken: () => Promise<{
|
|
72
78
|
data: null;
|
|
73
|
-
error:
|
|
79
|
+
error: FirebaseEdgeError;
|
|
74
80
|
} | {
|
|
75
81
|
data: null;
|
|
76
82
|
error: null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-edge-server.d.ts","sourceRoot":"","sources":["../src/firebase-edge-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"firebase-edge-server.d.ts","sourceRoot":"","sources":["../src/firebase-edge-server.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC1E,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAO/E,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAYzD;;GAEG;AACH,eAAO,MAAM,iCAAiC,kGASpC,CAAC;AAEX,KAAK,YAAY,GAAG,CAAC,OAAO,iCAAiC,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,KAAK,cAAc,GAAG,OAAO,CACzB,MAAM,CACF,YAAY,EACZ;IACI,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;CACzB,CACJ,CACJ,CAAC;AAEF;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,wBAAwB,CAAC,EACrC,cAAc,EACd,cAAc,EACd,SAAS,EACT,OAAO,EACP,UAAU,EACV,aAAa,EACb,KAAK,EACL,SAAS,EACT,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,KAAK,EACR,EAAE;IACC,cAAc,EAAE,cAAc,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,SAAS,EAAE,cAAc,CAAC;IAC1B,OAAO,EAAE,YAAY,CAAC;IACtB,KAAK,CAAC,EAAE,WAAW,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IACvC,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACnC;;;;6BAuDwC,OAAO;;;;;;;;;;8BAiDlC,MAAM,YACF;QACN,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB;8BAkCK,MAAM,YACF;QACN,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC1C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB;8BA8II,GAAG,iBACM,MAAM;;;;;;;;;;;;;;;;;EAiO3B"}
|
|
@@ -6,13 +6,13 @@ import { exchangeCodeForGoogleIdToken } from './auth/google-oauth.js';
|
|
|
6
6
|
import { createGitHubOAuthLoginUrl, createGoogleOAuthLoginUrl } from './auth/oauth.js';
|
|
7
7
|
import { FirebaseEdgeError } from './auth/errors.js';
|
|
8
8
|
import { FirebaseEdgeServerErrorInfo } from './firebase-edge-errors.js';
|
|
9
|
-
const
|
|
9
|
+
const COOKIE_LIFETIME_SECONDS = 60 * 60 * 24 * 5; // 5 days
|
|
10
10
|
const COOKIE_OPTIONS = {
|
|
11
11
|
httpOnly: true,
|
|
12
12
|
secure: true,
|
|
13
13
|
sameSite: 'lax',
|
|
14
14
|
path: '/',
|
|
15
|
-
maxAge:
|
|
15
|
+
maxAge: COOKIE_LIFETIME_SECONDS
|
|
16
16
|
};
|
|
17
17
|
/**
|
|
18
18
|
* Official Firebase OAuth providers
|
|
@@ -34,31 +34,42 @@ export const OFFICIAL_FIREBASE_OAUTH_PROVIDERS = [
|
|
|
34
34
|
* @param config.serviceAccount Firebase service account for admin operations
|
|
35
35
|
* @param config.firebaseConfig Firebase client configuration
|
|
36
36
|
* @param config.providers OAuth provider configurations (Google, GitHub, etc.)
|
|
37
|
-
* @param config.cookies Cookie management functions
|
|
37
|
+
* @param config.cookies Cookie management functions (getSession, saveSession)
|
|
38
|
+
* @param config.redirectUri OAuth callback redirect URI
|
|
39
|
+
* @param config.cache Optional cache implementation for token caching
|
|
40
|
+
* @param config.cacheName Optional cache key name for token storage
|
|
41
|
+
* @param config.cookieName Optional custom session cookie name (defaults to '__session')
|
|
42
|
+
* @param config.cookieOptions Optional cookie configuration overrides
|
|
38
43
|
* @param config.tenantId Optional Firebase Auth tenant ID for multi-tenancy
|
|
44
|
+
* @param config.autoLinkProviders Optional flag to automatically link accounts with same email
|
|
39
45
|
* @param config.fetch Optional custom fetch implementation
|
|
40
|
-
* @returns Object with authentication methods
|
|
46
|
+
* @returns Object with authentication methods (auth, adminAuth, signOut, getUser, getGoogleLoginURL, getGitHubLoginURL, signInWithCallback, getToken)
|
|
41
47
|
*/
|
|
42
|
-
export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, providers, cookies, tenantId, redirectUri, autoLinkProviders, fetch }) {
|
|
43
|
-
|
|
44
|
-
const
|
|
45
|
-
const saveSession = cookies
|
|
48
|
+
export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, providers, cookies, cookieName, cookieOptions, cache, cacheName, tenantId, redirectUri, autoLinkProviders, fetch }) {
|
|
49
|
+
// Cookies
|
|
50
|
+
const _cookieName = cookieName || '__session';
|
|
51
|
+
const { getSession, saveSession } = cookies;
|
|
52
|
+
const _cookieOptions = { ...COOKIE_OPTIONS, ...cookieOptions };
|
|
53
|
+
// Fetch
|
|
46
54
|
const fetchImpl = fetch ?? globalThis.fetch;
|
|
55
|
+
const cacheImpl = cache ?? undefined;
|
|
56
|
+
// Auth instances
|
|
47
57
|
const auth = new FirebaseAuth(firebaseConfig, redirectUri, tenantId, fetchImpl);
|
|
48
|
-
const adminAuth = new FirebaseAdminAuth(serviceAccount, tenantId, fetchImpl);
|
|
58
|
+
const adminAuth = new FirebaseAdminAuth(serviceAccount, tenantId, fetchImpl, cacheImpl, cacheName);
|
|
49
59
|
/**
|
|
50
|
-
* Clears the session cookie
|
|
51
|
-
* @internal
|
|
60
|
+
* Clears the session cookie by setting its maxAge to 0.
|
|
52
61
|
*/
|
|
53
62
|
function deleteSession() {
|
|
54
|
-
saveSession(
|
|
55
|
-
...
|
|
63
|
+
saveSession(_cookieName, '', {
|
|
64
|
+
..._cookieOptions,
|
|
56
65
|
maxAge: 0
|
|
57
66
|
});
|
|
58
67
|
}
|
|
59
68
|
/**
|
|
60
69
|
* Signs out the current user by clearing the session cookie.
|
|
61
70
|
* Note: This only removes the server-side session, not Firebase client tokens.
|
|
71
|
+
*
|
|
72
|
+
* @returns void
|
|
62
73
|
*/
|
|
63
74
|
function signOut() {
|
|
64
75
|
deleteSession();
|
|
@@ -67,11 +78,11 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
67
78
|
/**
|
|
68
79
|
* Gets the current authenticated user from the session cookie.
|
|
69
80
|
*
|
|
70
|
-
* @param checkRevoked Whether to check if the token has been revoked
|
|
71
|
-
* @returns Promise with
|
|
81
|
+
* @param checkRevoked Whether to check if the token has been revoked (defaults to false)
|
|
82
|
+
* @returns Promise resolving to object with decoded token data or null, and error if any
|
|
72
83
|
*/
|
|
73
84
|
async function getUser(checkRevoked = false) {
|
|
74
|
-
const sessionCookie = await getSession(
|
|
85
|
+
const sessionCookie = await getSession(_cookieName);
|
|
75
86
|
if (!sessionCookie) {
|
|
76
87
|
return {
|
|
77
88
|
data: null,
|
|
@@ -101,13 +112,13 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
101
112
|
/**
|
|
102
113
|
* Generates a Google OAuth login URL and clears any existing session.
|
|
103
114
|
*
|
|
104
|
-
* @param next State parameter for the OAuth flow
|
|
115
|
+
* @param next State parameter for the OAuth flow (typically the redirect path after login)
|
|
105
116
|
* @param options Optional configuration object
|
|
106
117
|
* @param options.languageCode ISO 639-1 language code (e.g., 'en', 'es', 'fr')
|
|
107
118
|
* @param options.customParameters Custom OAuth parameters (e.g., { login_hint: 'user@example.com', hd: 'example.com' })
|
|
108
119
|
* @param options.addScopes Additional OAuth scopes (e.g., ['https://www.googleapis.com/auth/calendar.readonly'])
|
|
109
|
-
* @returns Google OAuth login URL
|
|
110
|
-
* @throws
|
|
120
|
+
* @returns Promise resolving to Google OAuth login URL string
|
|
121
|
+
* @throws {FirebaseEdgeError} If Google provider is not configured
|
|
111
122
|
*/
|
|
112
123
|
async function getGoogleLoginURL(next, options) {
|
|
113
124
|
deleteSession();
|
|
@@ -121,12 +132,12 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
121
132
|
* Generates a GitHub OAuth login URL and clears any existing session.
|
|
122
133
|
* Note: GitHub doesn't support language parameters - language is determined by user's browser/account settings.
|
|
123
134
|
*
|
|
124
|
-
* @param next State parameter for the OAuth flow
|
|
135
|
+
* @param next State parameter for the OAuth flow (typically the redirect path after login)
|
|
125
136
|
* @param options Optional configuration object
|
|
126
137
|
* @param options.customParameters Custom OAuth parameters (e.g., { login: 'username', allow_signup: 'false' })
|
|
127
138
|
* @param options.addScopes Additional OAuth scopes (e.g., ['repo', 'gist'])
|
|
128
|
-
* @returns GitHub OAuth login URL
|
|
129
|
-
* @throws
|
|
139
|
+
* @returns Promise resolving to GitHub OAuth login URL string
|
|
140
|
+
* @throws {FirebaseEdgeError} If GitHub provider is not configured
|
|
130
141
|
*/
|
|
131
142
|
async function getGitHubLoginURL(next, options) {
|
|
132
143
|
deleteSession();
|
|
@@ -136,13 +147,87 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
136
147
|
const { client_id } = providers.github;
|
|
137
148
|
return createGitHubOAuthLoginUrl(redirectUri, next, client_id, options?.customParameters, options?.addScopes);
|
|
138
149
|
}
|
|
150
|
+
async function signInWithProviderToken(provider, oauthToken) {
|
|
151
|
+
const providerId = provider === 'google' ? 'google.com' : 'github.com';
|
|
152
|
+
const { data: signInData, error: signInError } = await auth.signInWithProvider(oauthToken, providerId);
|
|
153
|
+
if (signInError) {
|
|
154
|
+
return {
|
|
155
|
+
error: signInError
|
|
156
|
+
};
|
|
157
|
+
}
|
|
158
|
+
if (!signInData) {
|
|
159
|
+
return {
|
|
160
|
+
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_SIGN_IN_DATA)
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
// Account exists with that email but different sign-in method
|
|
164
|
+
if (signInData.needConfirmation) {
|
|
165
|
+
if (!autoLinkProviders) {
|
|
166
|
+
return {
|
|
167
|
+
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_ACCOUNT_EXISTS_DIFFERENT_METHOD)
|
|
168
|
+
};
|
|
169
|
+
}
|
|
170
|
+
if (!signInData.email) {
|
|
171
|
+
return {
|
|
172
|
+
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_EMAIL_FOR_AUTO_LINKING)
|
|
173
|
+
};
|
|
174
|
+
}
|
|
175
|
+
const { data, error: getEmailError } = await adminAuth.getUserByEmail(signInData.email);
|
|
176
|
+
if (getEmailError) {
|
|
177
|
+
return {
|
|
178
|
+
error: getEmailError
|
|
179
|
+
};
|
|
180
|
+
}
|
|
181
|
+
if (!data?.localId) {
|
|
182
|
+
return {
|
|
183
|
+
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_USER_RECORD)
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
const { data: customTokenData, error: tokenError } = await adminAuth.createCustomToken(data.localId);
|
|
187
|
+
if (tokenError) {
|
|
188
|
+
return {
|
|
189
|
+
data: null,
|
|
190
|
+
error: tokenError
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
const { data: customSignInData, error: customSignInError } = await auth.signInWithCustomToken(customTokenData);
|
|
194
|
+
if (customSignInError) {
|
|
195
|
+
return {
|
|
196
|
+
data: null,
|
|
197
|
+
error: customSignInError
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
if (!customSignInData?.idToken) {
|
|
201
|
+
return {
|
|
202
|
+
data: null,
|
|
203
|
+
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_ID_TOKEN)
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
const { data: linkData, error: linkError } = await auth.linkWithCredential(customSignInData.idToken, oauthToken, providerId);
|
|
207
|
+
if (linkError) {
|
|
208
|
+
return {
|
|
209
|
+
data: null,
|
|
210
|
+
error: linkError
|
|
211
|
+
};
|
|
212
|
+
}
|
|
213
|
+
return {
|
|
214
|
+
data: linkData,
|
|
215
|
+
error: null
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
return {
|
|
219
|
+
data: signInData,
|
|
220
|
+
error: signInError
|
|
221
|
+
};
|
|
222
|
+
}
|
|
139
223
|
/**
|
|
140
224
|
* Completes OAuth flow by exchanging authorization code for a session.
|
|
141
225
|
*
|
|
142
226
|
* @param url URL containing authorization code and state from OAuth callback
|
|
143
|
-
* @
|
|
227
|
+
* @param expiresIn_ms Session cookie expiration time in milliseconds (defaults to 5 days)
|
|
228
|
+
* @returns Promise resolving to object with next redirect path and error if any
|
|
144
229
|
*/
|
|
145
|
-
async function signInWithCallback(url) {
|
|
230
|
+
async function signInWithCallback(url, expiresIn_ms = COOKIE_LIFETIME_SECONDS * 1000) {
|
|
146
231
|
const code = url.searchParams.get('code');
|
|
147
232
|
const state = url.searchParams.get('state');
|
|
148
233
|
if (!code) {
|
|
@@ -199,8 +284,7 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
199
284
|
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_OAUTH_TOKEN)
|
|
200
285
|
};
|
|
201
286
|
}
|
|
202
|
-
const
|
|
203
|
-
const { data: signInData, error: signInError } = await auth.signInWithProvider(oauthToken, providerId);
|
|
287
|
+
const { data: signInData, error: signInError } = await signInWithProviderToken(provider, oauthToken);
|
|
204
288
|
if (signInError) {
|
|
205
289
|
return {
|
|
206
290
|
error: signInError
|
|
@@ -211,26 +295,13 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
211
295
|
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_SIGN_IN_DATA)
|
|
212
296
|
};
|
|
213
297
|
}
|
|
214
|
-
|
|
215
|
-
if (autoLinkProviders) {
|
|
216
|
-
// Implement auto-linking logic here
|
|
217
|
-
}
|
|
218
|
-
return {
|
|
219
|
-
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_ACCOUNT_EXISTS_DIFFERENT_METHOD)
|
|
220
|
-
};
|
|
221
|
-
}
|
|
222
|
-
const idToken = signInData?.idToken ??
|
|
223
|
-
signInData?.oauthIdToken ??
|
|
224
|
-
signInData?.oauthAccessToken ??
|
|
225
|
-
null;
|
|
298
|
+
const { idToken } = signInData;
|
|
226
299
|
if (!idToken) {
|
|
227
300
|
return {
|
|
228
301
|
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_ID_TOKEN)
|
|
229
302
|
};
|
|
230
303
|
}
|
|
231
|
-
const { data: sessionCookie, error: sessionError } = await adminAuth.createSessionCookie(idToken,
|
|
232
|
-
expiresIn: 60 * 60 * 24 * 5 * 1000
|
|
233
|
-
});
|
|
304
|
+
const { data: sessionCookie, error: sessionError } = await adminAuth.createSessionCookie(idToken, expiresIn_ms);
|
|
234
305
|
if (sessionError) {
|
|
235
306
|
return {
|
|
236
307
|
error: sessionError
|
|
@@ -241,7 +312,7 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
241
312
|
error: new FirebaseEdgeError(FirebaseEdgeServerErrorInfo.EDGE_NO_SESSION_COOKIE)
|
|
242
313
|
};
|
|
243
314
|
}
|
|
244
|
-
saveSession(
|
|
315
|
+
saveSession(_cookieName, sessionCookie, _cookieOptions);
|
|
245
316
|
return {
|
|
246
317
|
data: next,
|
|
247
318
|
error: null
|
|
@@ -249,8 +320,9 @@ export function createFirebaseEdgeServer({ serviceAccount, firebaseConfig, provi
|
|
|
249
320
|
}
|
|
250
321
|
/**
|
|
251
322
|
* Generates fresh Firebase client tokens for the authenticated user.
|
|
323
|
+
* Creates a custom token and exchanges it for a Firebase ID token and refresh token.
|
|
252
324
|
*
|
|
253
|
-
* @returns Promise with
|
|
325
|
+
* @returns Promise resolving to object with Firebase tokens (idToken, refreshToken, expiresIn) and error if any
|
|
254
326
|
*/
|
|
255
327
|
async function getToken() {
|
|
256
328
|
const { data: verifiedToken, error: verifyError } = await getUser();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-edge-server.js","sourceRoot":"","sources":["../src/firebase-edge-server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"firebase-edge-server.js","sourceRoot":"","sources":["../src/firebase-edge-server.ts"],"names":[],"mappings":"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"}
|
|
@@ -72,16 +72,16 @@ describe('createFirebaseEdgeServer', () => {
|
|
|
72
72
|
expect(server).toHaveProperty('signInWithCallback');
|
|
73
73
|
expect(server).toHaveProperty('getToken');
|
|
74
74
|
});
|
|
75
|
-
it('uses custom
|
|
75
|
+
it('uses custom cookie name when provided', () => {
|
|
76
76
|
const customServer = createFirebaseEdgeServer({
|
|
77
77
|
serviceAccount: mockServiceAccount,
|
|
78
78
|
firebaseConfig: mockFirebaseConfig,
|
|
79
79
|
providers: mockProviders,
|
|
80
80
|
cookies: {
|
|
81
81
|
getSession: mockGetSession,
|
|
82
|
-
saveSession: mockSaveSession
|
|
83
|
-
sessionName: 'custom-session'
|
|
82
|
+
saveSession: mockSaveSession
|
|
84
83
|
},
|
|
84
|
+
cookieName: 'custom-session',
|
|
85
85
|
redirectUri: 'http://localhost'
|
|
86
86
|
});
|
|
87
87
|
customServer.signOut();
|
|
@@ -134,7 +134,7 @@ describe('createFirebaseEdgeServer', () => {
|
|
|
134
134
|
redirectUri: 'http://localhost'
|
|
135
135
|
});
|
|
136
136
|
expect(vi.mocked(FirebaseAuth)).toHaveBeenCalledWith(mockFirebaseConfig, 'http://localhost', 'test-tenant-id', globalThis.fetch);
|
|
137
|
-
expect(vi.mocked(FirebaseAdminAuth)).toHaveBeenCalledWith(mockServiceAccount, 'test-tenant-id', globalThis.fetch);
|
|
137
|
+
expect(vi.mocked(FirebaseAdminAuth)).toHaveBeenCalledWith(mockServiceAccount, 'test-tenant-id', globalThis.fetch, undefined, undefined);
|
|
138
138
|
});
|
|
139
139
|
it('passes undefined tenant ID when not provided', () => {
|
|
140
140
|
vi.clearAllMocks();
|
|
@@ -149,7 +149,7 @@ describe('createFirebaseEdgeServer', () => {
|
|
|
149
149
|
redirectUri: 'http://localhost'
|
|
150
150
|
});
|
|
151
151
|
expect(vi.mocked(FirebaseAuth)).toHaveBeenCalledWith(mockFirebaseConfig, 'http://localhost', undefined, globalThis.fetch);
|
|
152
|
-
expect(vi.mocked(FirebaseAdminAuth)).toHaveBeenCalledWith(mockServiceAccount, undefined, globalThis.fetch);
|
|
152
|
+
expect(vi.mocked(FirebaseAdminAuth)).toHaveBeenCalledWith(mockServiceAccount, undefined, globalThis.fetch, undefined, undefined);
|
|
153
153
|
});
|
|
154
154
|
});
|
|
155
155
|
describe('signOut', () => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase-edge-server.test.js","sourceRoot":"","sources":["../src/firebase-edge-server.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"firebase-edge-server.test.js","sourceRoot":"","sources":["../src/firebase-edge-server.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
package/dist/index.js
CHANGED
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,2BAA2B,CAAC;AAC1C,cAAc,yBAAyB,CAAC;AACxC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,wBAAwB,CAAC;AACvC,cAAc,wBAAwB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export declare class TokenCache {
|
|
2
|
+
private store;
|
|
3
|
+
constructor();
|
|
4
|
+
set<T>(key: string, value: T, ttlMs?: number): void;
|
|
5
|
+
get<T>(key: string): T | undefined;
|
|
6
|
+
has(key: string): boolean;
|
|
7
|
+
delete(key: string): boolean;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=token-cache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache.d.ts","sourceRoot":"","sources":["../../src/utils/token-cache.ts"],"names":[],"mappings":"AAAA,qBAAa,UAAU;IACnB,OAAO,CAAC,KAAK,CAA0D;;IAIvE,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,SAAc;IAOjD,GAAG,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,GAAG,CAAC,GAAG,SAAS;IAYlC,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO;IAIzB,MAAM,CAAC,GAAG,EAAE,MAAM;CAGrB"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export class TokenCache {
|
|
2
|
+
store = new Map();
|
|
3
|
+
constructor() { }
|
|
4
|
+
set(key, value, ttlMs = 3600 * 1000) {
|
|
5
|
+
this.store.set(key, {
|
|
6
|
+
value,
|
|
7
|
+
expires: Date.now() + ttlMs
|
|
8
|
+
});
|
|
9
|
+
}
|
|
10
|
+
get(key) {
|
|
11
|
+
const entry = this.store.get(key);
|
|
12
|
+
if (!entry)
|
|
13
|
+
return undefined;
|
|
14
|
+
if (Date.now() > entry.expires) {
|
|
15
|
+
this.store.delete(key);
|
|
16
|
+
return undefined;
|
|
17
|
+
}
|
|
18
|
+
return entry.value;
|
|
19
|
+
}
|
|
20
|
+
has(key) {
|
|
21
|
+
return this.get(key) !== undefined;
|
|
22
|
+
}
|
|
23
|
+
delete(key) {
|
|
24
|
+
return this.store.delete(key);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=token-cache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-cache.js","sourceRoot":"","sources":["../../src/utils/token-cache.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,UAAU;IACX,KAAK,GAAG,IAAI,GAAG,EAA+C,CAAC;IAEvE,gBAAe,CAAC;IAEhB,GAAG,CAAI,GAAW,EAAE,KAAQ,EAAE,KAAK,GAAG,IAAI,GAAG,IAAI;QAC7C,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;YAChB,KAAK;YACL,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK;SAC9B,CAAC,CAAC;IACP,CAAC;IAED,GAAG,CAAI,GAAW;QACd,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAE7B,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;YACvB,OAAO,SAAS,CAAC;QACrB,CAAC;QAED,OAAO,KAAK,CAAC,KAAU,CAAC;IAC5B,CAAC;IAED,GAAG,CAAC,GAAW;QACX,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC;IACvC,CAAC;IAED,MAAM,CAAC,GAAW;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClC,CAAC;CACJ"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "firebase-admin-edge",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.24",
|
|
4
4
|
"description": "A demo package for Total TypeScript",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"demo",
|
|
@@ -33,6 +33,7 @@
|
|
|
33
33
|
"scripts": {
|
|
34
34
|
"build": "npm run clean && tsc",
|
|
35
35
|
"ci": "npm run build && npm run check-format && npm run test",
|
|
36
|
+
"fci": "npm run format &&npm run ci",
|
|
36
37
|
"format": "prettier --write .",
|
|
37
38
|
"check-format": "prettier --check .",
|
|
38
39
|
"test": "vitest run",
|