firebase-admin-edge 1.0.25 → 1.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.
Files changed (63) hide show
  1. package/README.md +45 -42
  2. package/dist/auth/auth-error-codes.d.ts +32 -0
  3. package/dist/auth/auth-error-codes.d.ts.map +1 -1
  4. package/dist/auth/auth-error-codes.js +32 -0
  5. package/dist/auth/auth-error-codes.js.map +1 -1
  6. package/dist/auth/email-action-request.d.ts +40 -0
  7. package/dist/auth/email-action-request.d.ts.map +1 -0
  8. package/dist/auth/email-action-request.js +80 -0
  9. package/dist/auth/email-action-request.js.map +1 -0
  10. package/dist/auth/email-action-request.test.d.ts +2 -0
  11. package/dist/auth/email-action-request.test.d.ts.map +1 -0
  12. package/dist/auth/email-action-request.test.js +128 -0
  13. package/dist/auth/email-action-request.test.js.map +1 -0
  14. package/dist/auth/firebase-admin-auth.d.ts +67 -9
  15. package/dist/auth/firebase-admin-auth.d.ts.map +1 -1
  16. package/dist/auth/firebase-admin-auth.js +491 -13
  17. package/dist/auth/firebase-admin-auth.js.map +1 -1
  18. package/dist/auth/firebase-admin-auth.test.js +1015 -6
  19. package/dist/auth/firebase-admin-auth.test.js.map +1 -1
  20. package/dist/auth/firebase-auth-endpoints.d.ts +84 -4
  21. package/dist/auth/firebase-auth-endpoints.d.ts.map +1 -1
  22. package/dist/auth/firebase-auth-endpoints.js +150 -8
  23. package/dist/auth/firebase-auth-endpoints.js.map +1 -1
  24. package/dist/auth/firebase-auth-endpoints.test.js +335 -3
  25. package/dist/auth/firebase-auth-endpoints.test.js.map +1 -1
  26. package/dist/auth/user-batch.d.ts +21 -0
  27. package/dist/auth/user-batch.d.ts.map +1 -0
  28. package/dist/auth/user-batch.js +49 -0
  29. package/dist/auth/user-batch.js.map +1 -0
  30. package/dist/auth/user-batch.test.d.ts +2 -0
  31. package/dist/auth/user-batch.test.d.ts.map +1 -0
  32. package/dist/auth/user-batch.test.js +73 -0
  33. package/dist/auth/user-batch.test.js.map +1 -0
  34. package/dist/auth/user-import.d.ts +55 -0
  35. package/dist/auth/user-import.d.ts.map +1 -0
  36. package/dist/auth/user-import.js +208 -0
  37. package/dist/auth/user-import.js.map +1 -0
  38. package/dist/auth/user-import.test.d.ts +2 -0
  39. package/dist/auth/user-import.test.d.ts.map +1 -0
  40. package/dist/auth/user-import.test.js +217 -0
  41. package/dist/auth/user-import.test.js.map +1 -0
  42. package/dist/auth/user-record.d.ts +69 -0
  43. package/dist/auth/user-record.d.ts.map +1 -0
  44. package/dist/auth/user-record.js +104 -0
  45. package/dist/auth/user-record.js.map +1 -0
  46. package/dist/auth/user-record.test.d.ts +2 -0
  47. package/dist/auth/user-record.test.d.ts.map +1 -0
  48. package/dist/auth/user-record.test.js +198 -0
  49. package/dist/auth/user-record.test.js.map +1 -0
  50. package/dist/auth/user-request.d.ts +98 -0
  51. package/dist/auth/user-request.d.ts.map +1 -0
  52. package/dist/auth/user-request.js +298 -0
  53. package/dist/auth/user-request.js.map +1 -0
  54. package/dist/auth/user-request.test.d.ts +2 -0
  55. package/dist/auth/user-request.test.d.ts.map +1 -0
  56. package/dist/auth/user-request.test.js +327 -0
  57. package/dist/auth/user-request.test.js.map +1 -0
  58. package/dist/firebase-edge-server.d.ts.map +1 -1
  59. package/dist/firebase-edge-server.js +6 -2
  60. package/dist/firebase-edge-server.js.map +1 -1
  61. package/dist/firebase-edge-server.test.js +29 -0
  62. package/dist/firebase-edge-server.test.js.map +1 -1
  63. package/package.json +1 -1
@@ -1,7 +1,12 @@
1
- import { createSessionCookie, getAccountInfo, revokeRefreshTokens } from './firebase-auth-endpoints.js';
1
+ import { generateEmailActionLink, deleteAccountsAdmin, importAccountsAdmin, createAccountAdmin, updateAccountAdmin, deleteAccountAdmin, createSessionCookie, downloadAccount, getAccountInfo, getAccountsInfo, revokeRefreshTokens } from './firebase-auth-endpoints.js';
2
2
  import { signJWTCustomToken, verifyJWT, verifySessionJWT } from './firebase-jwt.js';
3
3
  import { getToken } from './google-oauth.js';
4
4
  import { FirebaseEdgeError, FirebaseAdminAuthErrorInfo, ensureError } from './errors.js';
5
+ import { validateDeleteUsers, createBatchUserResult } from './user-batch.js';
6
+ import { prepareUserImport } from './user-import.js';
7
+ import { createUserRecord, createGetUsersResult } from './user-record.js';
8
+ import { buildUserRequest, buildCustomClaimsRequest, buildUsersLookupRequest, validateUserUid } from './user-request.js';
9
+ import { buildEmailActionRequest } from './email-action-request.js';
5
10
  /**
6
11
  * Firebase Admin Authentication handler for edge environments.
7
12
  * Provides server-side authentication operations using service account credentials.
@@ -60,6 +65,276 @@ export class FirebaseAdminAuth {
60
65
  error: null
61
66
  };
62
67
  }
68
+ /** Create a user and return the complete user record. */
69
+ async createUser(properties) {
70
+ const request = buildUserRequest(properties, 'create');
71
+ if (request.error)
72
+ return { data: null, error: request.error };
73
+ try {
74
+ const { data: token, error } = await this.getCachedToken();
75
+ if (error)
76
+ return { data: null, error };
77
+ if (!token?.access_token)
78
+ return {
79
+ data: null,
80
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
81
+ };
82
+ const result = await createAccountAdmin(this.serviceAccountKey.project_id, request.data, token.access_token, this.fetch, this.tenantId);
83
+ if (result.error)
84
+ return {
85
+ data: null,
86
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_CREATE_USER_FAILED, { cause: result.error })
87
+ };
88
+ if (!result.data?.localId)
89
+ return {
90
+ data: null,
91
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_CREATE_USER_FAILED)
92
+ };
93
+ return await this.getManagedUser(result.data.localId, token.access_token);
94
+ }
95
+ catch (cause) {
96
+ return {
97
+ data: null,
98
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_CREATE_USER_FAILED, { cause: ensureError(cause) })
99
+ };
100
+ }
101
+ }
102
+ /** Update a user; null clears displayName, photoURL, or phoneNumber. */
103
+ async updateUser(uid, properties) {
104
+ const uidError = validateUserUid(uid);
105
+ if (uidError)
106
+ return { data: null, error: uidError };
107
+ const request = buildUserRequest(properties, 'update');
108
+ if (request.error)
109
+ return { data: null, error: request.error };
110
+ try {
111
+ const { data: token, error } = await this.getCachedToken();
112
+ if (error)
113
+ return { data: null, error };
114
+ if (!token?.access_token)
115
+ return {
116
+ data: null,
117
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
118
+ };
119
+ const result = await updateAccountAdmin(this.serviceAccountKey.project_id, uid, request.data, token.access_token, this.fetch, this.tenantId);
120
+ if (result.error)
121
+ return {
122
+ data: null,
123
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_UPDATE_USER_FAILED, { cause: result.error })
124
+ };
125
+ if (!result.data?.localId)
126
+ return {
127
+ data: null,
128
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_UPDATE_USER_FAILED)
129
+ };
130
+ return await this.getManagedUser(result.data.localId, token.access_token);
131
+ }
132
+ catch (cause) {
133
+ return {
134
+ data: null,
135
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_UPDATE_USER_FAILED, { cause: ensureError(cause) })
136
+ };
137
+ }
138
+ }
139
+ /** Replace stored custom claims; pass null to clear all claims. */
140
+ async setCustomUserClaims(uid, claims) {
141
+ const uidError = validateUserUid(uid);
142
+ if (uidError)
143
+ return { data: null, error: uidError };
144
+ const request = buildCustomClaimsRequest(claims);
145
+ if (request.error)
146
+ return { data: null, error: request.error };
147
+ try {
148
+ const { data: token, error } = await this.getCachedToken();
149
+ if (error)
150
+ return { data: null, error };
151
+ if (!token?.access_token)
152
+ return {
153
+ data: null,
154
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
155
+ };
156
+ const result = await updateAccountAdmin(this.serviceAccountKey.project_id, uid, request.data, token.access_token, this.fetch, this.tenantId);
157
+ if (result.error)
158
+ return {
159
+ data: null,
160
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SET_CUSTOM_CLAIMS_FAILED, { cause: result.error })
161
+ };
162
+ if (!result.data?.localId)
163
+ return {
164
+ data: null,
165
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SET_CUSTOM_CLAIMS_FAILED)
166
+ };
167
+ return { data: undefined, error: null };
168
+ }
169
+ catch (cause) {
170
+ return {
171
+ data: null,
172
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SET_CUSTOM_CLAIMS_FAILED, { cause: ensureError(cause) })
173
+ };
174
+ }
175
+ }
176
+ /** Delete one user. A successful deletion returns undefined data. */
177
+ async deleteUser(uid) {
178
+ const uidError = validateUserUid(uid);
179
+ if (uidError)
180
+ return { data: null, error: uidError };
181
+ try {
182
+ const { data: token, error } = await this.getCachedToken();
183
+ if (error)
184
+ return { data: null, error };
185
+ if (!token?.access_token)
186
+ return {
187
+ data: null,
188
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
189
+ };
190
+ const result = await deleteAccountAdmin(this.serviceAccountKey.project_id, uid, token.access_token, this.fetch, this.tenantId);
191
+ if (result.error)
192
+ return {
193
+ data: null,
194
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_DELETE_USER_FAILED, { cause: result.error })
195
+ };
196
+ return { data: undefined, error: null };
197
+ }
198
+ catch (cause) {
199
+ return {
200
+ data: null,
201
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_DELETE_USER_FAILED, { cause: ensureError(cause) })
202
+ };
203
+ }
204
+ }
205
+ /** Delete up to 1000 users, reporting failures by original input index. */
206
+ async deleteUsers(uids) {
207
+ const validationError = validateDeleteUsers(uids);
208
+ if (validationError)
209
+ return { data: null, error: validationError };
210
+ if (uids.length === 0)
211
+ return { data: createBatchUserResult([]), error: null };
212
+ try {
213
+ const { data: token, error } = await this.getCachedToken();
214
+ if (error)
215
+ return { data: null, error };
216
+ if (!token?.access_token)
217
+ return {
218
+ data: null,
219
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
220
+ };
221
+ const result = await deleteAccountsAdmin(this.serviceAccountKey.project_id, uids, token.access_token, this.fetch, this.tenantId);
222
+ if (result.error)
223
+ return {
224
+ data: null,
225
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_DELETE_USER_FAILED, { cause: result.error })
226
+ };
227
+ if (!result.data || typeof result.data !== 'object')
228
+ return {
229
+ data: null,
230
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_DELETE_USER_FAILED)
231
+ };
232
+ return {
233
+ data: createBatchUserResult(uids.map((_, index) => index), result.data.errors),
234
+ error: null
235
+ };
236
+ }
237
+ catch (cause) {
238
+ return {
239
+ data: null,
240
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_DELETE_USER_FAILED, { cause: ensureError(cause) })
241
+ };
242
+ }
243
+ }
244
+ /** Import up to 1000 users, with local and API failures indexed to the original input. */
245
+ async importUsers(users, options) {
246
+ const prepared = prepareUserImport(users, options, this.tenantId);
247
+ if (prepared.error)
248
+ return { data: null, error: prepared.error };
249
+ const { body, indices, errors } = prepared.data;
250
+ if (indices.length === 0)
251
+ return {
252
+ data: createBatchUserResult([], [], errors, 'import'),
253
+ error: null
254
+ };
255
+ try {
256
+ const { data: token, error } = await this.getCachedToken();
257
+ if (error)
258
+ return { data: null, error };
259
+ if (!token?.access_token)
260
+ return {
261
+ data: null,
262
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
263
+ };
264
+ const result = await importAccountsAdmin(this.serviceAccountKey.project_id, body, token.access_token, this.fetch, this.tenantId);
265
+ if (result.error)
266
+ return {
267
+ data: null,
268
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_IMPORT_USERS_FAILED, { cause: result.error })
269
+ };
270
+ if (!result.data || typeof result.data !== 'object')
271
+ return {
272
+ data: null,
273
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_IMPORT_USERS_FAILED)
274
+ };
275
+ return {
276
+ data: createBatchUserResult(indices, result.data.error, errors, 'import'),
277
+ error: null
278
+ };
279
+ }
280
+ catch (cause) {
281
+ return {
282
+ data: null,
283
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_IMPORT_USERS_FAILED, { cause: ensureError(cause) })
284
+ };
285
+ }
286
+ }
287
+ /** Read back a complete record after a successful create or update. */
288
+ async getManagedUser(uid, token) {
289
+ const { data, error } = await getAccountInfo({ uid }, token, this.serviceAccountKey.project_id, this.tenantId, this.fetch);
290
+ if (error)
291
+ return { data: null, error };
292
+ if (!data)
293
+ return {
294
+ data: null,
295
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_RECORD_NOT_FOUND)
296
+ };
297
+ return { data: createUserRecord(data), error: null };
298
+ }
299
+ /** Look up at most 100 identifiers, returning users and unmatched identifiers. */
300
+ async getUsers(identifiers) {
301
+ const request = buildUsersLookupRequest(identifiers);
302
+ if (request.error)
303
+ return { data: null, error: request.error };
304
+ if (identifiers.length === 0)
305
+ return { data: { users: [], notFound: [] }, error: null };
306
+ try {
307
+ const { data: token, error } = await this.getCachedToken();
308
+ if (error)
309
+ return { data: null, error };
310
+ if (!token?.access_token)
311
+ return {
312
+ data: null,
313
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
314
+ };
315
+ const result = await getAccountsInfo(request.data, token.access_token, this.serviceAccountKey.project_id, this.tenantId, this.fetch);
316
+ if (result.error)
317
+ return {
318
+ data: null,
319
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_LOOKUP_FAILED, { cause: result.error })
320
+ };
321
+ if (!result.data || typeof result.data !== 'object')
322
+ return {
323
+ data: null,
324
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_LOOKUP_FAILED)
325
+ };
326
+ return {
327
+ data: createGetUsersResult(identifiers, result.data),
328
+ error: null
329
+ };
330
+ }
331
+ catch (cause) {
332
+ return {
333
+ data: null,
334
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_LOOKUP_FAILED, { cause: ensureError(cause) })
335
+ };
336
+ }
337
+ }
63
338
  /**
64
339
  * Retrieves user account information by UID.
65
340
  *
@@ -86,6 +361,73 @@ export class FirebaseAdminAuth {
86
361
  error: null
87
362
  };
88
363
  }
364
+ /**
365
+ * Lists one page of users, using Firebase Admin's page size and token contract.
366
+ * @param maxResults Page size (1–1000), defaults to 1000.
367
+ * @param pageToken Token returned by the previous page.
368
+ * @returns User records and an optional next page token, or a structured error.
369
+ */
370
+ async listUsers(maxResults = 1000, pageToken) {
371
+ if (pageToken !== undefined &&
372
+ (typeof pageToken !== 'string' || pageToken.length === 0)) {
373
+ return {
374
+ data: null,
375
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_INVALID_PAGE_TOKEN)
376
+ };
377
+ }
378
+ if (!Number.isInteger(maxResults) ||
379
+ maxResults < 1 ||
380
+ maxResults > 1000) {
381
+ return {
382
+ data: null,
383
+ error: new FirebaseEdgeError({
384
+ ...FirebaseAdminAuthErrorInfo.ADMIN_API_INVALID_ARGUMENT,
385
+ message: 'maxResults must be a positive integer that does not exceed 1000.'
386
+ })
387
+ };
388
+ }
389
+ try {
390
+ const { data: token, error: tokenError } = await this.getCachedToken();
391
+ if (tokenError)
392
+ return { data: null, error: tokenError };
393
+ if (!token?.access_token) {
394
+ return {
395
+ data: null,
396
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
397
+ };
398
+ }
399
+ const { data, error } = await downloadAccount(token.access_token, this.serviceAccountKey.project_id, maxResults, pageToken, this.tenantId, this.fetch);
400
+ if (error) {
401
+ return {
402
+ data: null,
403
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_LIST_USERS_FAILED, {
404
+ cause: ensureError(error)
405
+ })
406
+ };
407
+ }
408
+ if (!data || typeof data !== 'object') {
409
+ return {
410
+ data: null,
411
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_LIST_USERS_FAILED)
412
+ };
413
+ }
414
+ return {
415
+ data: {
416
+ users: (data.users ?? []).map(createUserRecord),
417
+ ...(data.nextPageToken !== undefined && {
418
+ pageToken: data.nextPageToken
419
+ })
420
+ },
421
+ error: null
422
+ };
423
+ }
424
+ catch (error) {
425
+ return {
426
+ data: null,
427
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_LIST_USERS_FAILED, { cause: ensureError(error) })
428
+ };
429
+ }
430
+ }
89
431
  /**
90
432
  * Retrieves user account information by email address.
91
433
  *
@@ -112,6 +454,55 @@ export class FirebaseAdminAuth {
112
454
  error: null
113
455
  };
114
456
  }
457
+ /** Look up a linked provider UID, or a primary email/phone identifier. */
458
+ async getUserByProviderUid(providerId, uid) {
459
+ const identifier = providerId === 'email'
460
+ ? { email: uid }
461
+ : providerId === 'phone'
462
+ ? { phoneNumber: uid }
463
+ : { providerId, providerUid: uid };
464
+ const result = await this.getUsers([identifier]);
465
+ if (result.error)
466
+ return { data: null, error: result.error };
467
+ const user = result.data.users[0];
468
+ if (!user)
469
+ return {
470
+ data: null,
471
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_NOT_FOUND)
472
+ };
473
+ return { data: user, error: null };
474
+ }
475
+ /** Look up a user by their primary international phone number. */
476
+ async getUserByPhoneNumber(phoneNumber) {
477
+ const validation = buildUsersLookupRequest([{ phoneNumber }]);
478
+ if (validation.error)
479
+ return { data: null, error: validation.error };
480
+ try {
481
+ const { data: token, error } = await this.getCachedToken();
482
+ if (error)
483
+ return { data: null, error };
484
+ if (!token?.access_token)
485
+ return {
486
+ data: null,
487
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
488
+ };
489
+ const result = await getAccountInfo({ phoneNumber }, token.access_token, this.serviceAccountKey.project_id, this.tenantId, this.fetch);
490
+ if (result.error)
491
+ return { data: null, error: result.error };
492
+ if (!result.data)
493
+ return {
494
+ data: null,
495
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_NOT_FOUND)
496
+ };
497
+ return { data: createUserRecord(result.data), error: null };
498
+ }
499
+ catch (cause) {
500
+ return {
501
+ data: null,
502
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_LOOKUP_FAILED, { cause: ensureError(cause) })
503
+ };
504
+ }
505
+ }
115
506
  /**
116
507
  * Verifies a Firebase ID token and returns the decoded payload.
117
508
  * Optionally checks if the token has been revoked.
@@ -193,28 +584,105 @@ export class FirebaseAdminAuth {
193
584
  * Creates a session cookie from a Firebase ID token.
194
585
  *
195
586
  * @param idToken Firebase ID token to convert to session cookie
196
- * @param expiresIn_ms Session cookie expiration time in milliseconds
587
+ * @param options Session cookie lifetime in milliseconds
197
588
  * @returns Promise with object containing session cookie string or null, and error if any
198
589
  */
199
- async createSessionCookie(idToken, expiresIn_ms) {
200
- const { data: token, error: getTokenError } = await this.getCachedToken();
201
- if (getTokenError) {
590
+ async createSessionCookie(idToken, options) {
591
+ if (typeof idToken !== 'string' || !idToken.length)
202
592
  return {
203
593
  data: null,
204
- error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SERVICE_ACCOUNT_TOKEN_FAILED, { cause: getTokenError })
594
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_ID_TOKEN_INVALID)
595
+ };
596
+ if (!options ||
597
+ typeof options !== 'object' ||
598
+ !Number.isFinite(options.expiresIn) ||
599
+ options.expiresIn < 300000 ||
600
+ options.expiresIn > 1209600000)
601
+ return {
602
+ data: null,
603
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SESSION_COOKIE_DURATION_INVALID)
604
+ };
605
+ try {
606
+ const { data: token, error: getTokenError } = await this.getCachedToken();
607
+ if (getTokenError) {
608
+ return {
609
+ data: null,
610
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SERVICE_ACCOUNT_TOKEN_FAILED, { cause: getTokenError })
611
+ };
612
+ }
613
+ if (!token?.access_token)
614
+ return {
615
+ data: null,
616
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
617
+ };
618
+ const { data, error } = await createSessionCookie(idToken, token.access_token, this.serviceAccountKey.project_id, options.expiresIn, this.tenantId, this.fetch);
619
+ if (error || !data) {
620
+ return {
621
+ data: null,
622
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SESSION_COOKIE_CREATE_FAILED, {
623
+ cause: ensureError(error ??
624
+ new Error('Firebase returned no session cookie.'))
625
+ })
626
+ };
627
+ }
628
+ return {
629
+ data,
630
+ error: null
205
631
  };
206
632
  }
207
- const { data, error } = await createSessionCookie(idToken, token.access_token, this.serviceAccountKey.project_id, expiresIn_ms, this.tenantId, this.fetch);
208
- if (error) {
633
+ catch (cause) {
209
634
  return {
210
635
  data: null,
211
- error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SESSION_COOKIE_CREATE_FAILED, { cause: ensureError(error) })
636
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SESSION_COOKIE_CREATE_FAILED, { cause: ensureError(cause) })
637
+ };
638
+ }
639
+ }
640
+ /** Generate a password reset link to send through your own email service. */
641
+ async generatePasswordResetLink(email, settings) {
642
+ return this.generateActionLink('PASSWORD_RESET', email, settings);
643
+ }
644
+ /** Generate an email verification link without sending an email. */
645
+ async generateEmailVerificationLink(email, settings) {
646
+ return this.generateActionLink('VERIFY_EMAIL', email, settings);
647
+ }
648
+ /** Generate a link that verifies a new email before changing the account email. */
649
+ async generateVerifyAndChangeEmailLink(email, newEmail, settings) {
650
+ return this.generateActionLink('VERIFY_AND_CHANGE_EMAIL', email, settings, newEmail);
651
+ }
652
+ /** Generate an email sign-in link; action code settings are required. */
653
+ async generateSignInWithEmailLink(email, settings) {
654
+ return this.generateActionLink('EMAIL_SIGNIN', email, settings);
655
+ }
656
+ async generateActionLink(requestType, email, settings, newEmail) {
657
+ const request = buildEmailActionRequest(requestType, email, settings, newEmail);
658
+ if (request.error)
659
+ return request;
660
+ try {
661
+ const { data: token, error: tokenError } = await this.getCachedToken();
662
+ if (tokenError)
663
+ return {
664
+ data: null,
665
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SERVICE_ACCOUNT_TOKEN_FAILED, { cause: ensureError(tokenError) })
666
+ };
667
+ if (!token?.access_token)
668
+ return {
669
+ data: null,
670
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_NO_TOKEN_RETURNED)
671
+ };
672
+ const { data, error } = await generateEmailActionLink(this.serviceAccountKey.project_id, request.data, token.access_token, this.fetch, this.tenantId);
673
+ if (error)
674
+ return {
675
+ data: null,
676
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_EMAIL_ACTION_LINK_FAILED, { cause: ensureError(error) })
677
+ };
678
+ return { data, error: null };
679
+ }
680
+ catch (cause) {
681
+ return {
682
+ data: null,
683
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_EMAIL_ACTION_LINK_FAILED, { cause: ensureError(cause) })
212
684
  };
213
685
  }
214
- return {
215
- data,
216
- error: null
217
- };
218
686
  }
219
687
  /**
220
688
  * Verifies a Firebase session cookie and returns the decoded payload.
@@ -272,6 +740,16 @@ export class FirebaseAdminAuth {
272
740
  error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_RECORD_NOT_FOUND)
273
741
  };
274
742
  }
743
+ if (user.disabled)
744
+ return {
745
+ data: null,
746
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_USER_DISABLED)
747
+ };
748
+ if (user.validSince && data.auth_time < Number(user.validSince))
749
+ return {
750
+ data: null,
751
+ error: new FirebaseEdgeError(FirebaseAdminAuthErrorInfo.ADMIN_SESSION_COOKIE_REVOKED)
752
+ };
275
753
  return {
276
754
  data,
277
755
  error: null
@@ -1 +1 @@
1
- {"version":3,"file":"firebase-admin-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-admin-auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase-admin-auth.js","sourceRoot":"","sources":["../../src/auth/firebase-admin-auth.ts"],"names":[],"mappings":"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"}