Skip to content

Commit 086df7c

Browse files
AppCheck integration for Firestore (#5634)
* AppCheck integration for Firestore. * Update datastore and connection. * Better invokeWithTokens function. * Update/add unit tests. * Create mean-elephants-rush.md * Fix lint issues. * Update webchannel_connection too. * Make 'user' optional. And better function name. * Address code review comments. * Fix formatting. * update changeset. * try without invokeWithTokens. * Update lite/register.ts. * Don't add AppCheck token if it's an empty string. * Prettier. * Fix firestore-compat. * Prettier. * Add LiteAppCheckTokenProvider. * string, not String. * Add "Auth" to class names where applicable. * Rename authHeaders->headers. Add a test for empty AppCheck token. * Better way to apply token headers. * Improve code readability for applying tokens. * Add app-check-interop-types to externs.json. * Update .changeset/mean-elephants-rush.md Co-authored-by: Sebastian Schmidt <[email protected]> Co-authored-by: Sebastian Schmidt <[email protected]>
1 parent cb7299c commit 086df7c

27 files changed

+578
-194
lines changed

.changeset/mean-elephants-rush.md

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
---
2+
"@firebase/firestore": minor
3+
firebase: minor
4+
---
5+
6+
AppCheck integration for Firestore

packages/firestore-compat/src/index.console.ts

+4-2
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ import {
2121
_DatabaseId,
2222
Firestore as FirestoreExp,
2323
FirestoreError,
24-
_EmptyCredentialsProvider
24+
_EmptyAuthCredentialsProvider,
25+
_EmptyAppCheckTokenProvider
2526
} from '@firebase/firestore';
2627

2728
import {
@@ -91,7 +92,8 @@ export class Firestore extends FirestoreCompat {
9192
databaseIdFromFirestoreDatabase(firestoreDatabase),
9293
new FirestoreExp(
9394
databaseIdFromFirestoreDatabase(firestoreDatabase),
94-
new _EmptyCredentialsProvider()
95+
new _EmptyAuthCredentialsProvider(),
96+
new _EmptyAppCheckTokenProvider()
9597
),
9698
new MemoryPersistenceProvider()
9799
);

packages/firestore/externs.json

+1
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
"packages/app-types/index.d.ts",
1515
"packages/app-types/private.d.ts",
1616
"packages/app/dist/app.d.ts",
17+
"packages/app-check-interop-types/index.d.ts",
1718
"packages/auth-interop-types/index.d.ts",
1819
"packages/firestore/dist/lite/internal.d.ts",
1920
"packages/firestore/dist/internal.d.ts",

packages/firestore/lite/register.ts

+10-2
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ import {
2323
import { Component, ComponentType } from '@firebase/component';
2424

2525
import { version } from '../package.json';
26-
import { LiteCredentialsProvider } from '../src/api/credentials';
26+
import {
27+
LiteAppCheckTokenProvider,
28+
LiteAuthCredentialsProvider
29+
} from '../src/api/credentials';
2730
import { setSDKVersion } from '../src/core/version';
2831
import { Firestore } from '../src/lite-api/database';
2932
import { FirestoreSettings } from '../src/lite-api/settings';
@@ -43,7 +46,12 @@ export function registerFirestore(): void {
4346
const app = container.getProvider('app').getImmediate()!;
4447
const firestoreInstance = new Firestore(
4548
app,
46-
new LiteCredentialsProvider(container.getProvider('auth-internal'))
49+
new LiteAuthCredentialsProvider(
50+
container.getProvider('auth-internal')
51+
),
52+
new LiteAppCheckTokenProvider(
53+
container.getProvider('app-check-internal')
54+
)
4755
);
4856
if (settings) {
4957
firestoreInstance._setSettings(settings);

packages/firestore/src/api.ts

+2-1
Original file line numberDiff line numberDiff line change
@@ -156,4 +156,5 @@ export { FieldPath as _FieldPath } from './model/path';
156156
export type { ResourcePath as _ResourcePath } from './model/path';
157157
export type { ByteString as _ByteString } from './util/byte_string';
158158
export { logWarn as _logWarn } from './util/log';
159-
export { EmptyCredentialsProvider as _EmptyCredentialsProvider } from './api/credentials';
159+
export { EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider } from './api/credentials';
160+
export { EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider } from './api/credentials';

0 commit comments

Comments
 (0)