Skip to content

Commit

Permalink
AppCheck integration for Firestore (#5634)
Browse files Browse the repository at this point in the history
* 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 <mrschmidt@google.com>

Co-authored-by: Sebastian Schmidt <mrschmidt@google.com>
  • Loading branch information
ehsannas and schmidt-sebastian committed Nov 22, 2021
1 parent cb7299c commit 086df7c
Show file tree
Hide file tree
Showing 27 changed files with 578 additions and 194 deletions.
6 changes: 6 additions & 0 deletions .changeset/mean-elephants-rush.md
@@ -0,0 +1,6 @@
---
"@firebase/firestore": minor
firebase: minor
---

AppCheck integration for Firestore
6 changes: 4 additions & 2 deletions packages/firestore-compat/src/index.console.ts
Expand Up @@ -21,7 +21,8 @@ import {
_DatabaseId,
Firestore as FirestoreExp,
FirestoreError,
_EmptyCredentialsProvider
_EmptyAuthCredentialsProvider,
_EmptyAppCheckTokenProvider
} from '@firebase/firestore';

import {
Expand Down Expand Up @@ -91,7 +92,8 @@ export class Firestore extends FirestoreCompat {
databaseIdFromFirestoreDatabase(firestoreDatabase),
new FirestoreExp(
databaseIdFromFirestoreDatabase(firestoreDatabase),
new _EmptyCredentialsProvider()
new _EmptyAuthCredentialsProvider(),
new _EmptyAppCheckTokenProvider()
),
new MemoryPersistenceProvider()
);
Expand Down
1 change: 1 addition & 0 deletions packages/firestore/externs.json
Expand Up @@ -14,6 +14,7 @@
"packages/app-types/index.d.ts",
"packages/app-types/private.d.ts",
"packages/app/dist/app.d.ts",
"packages/app-check-interop-types/index.d.ts",
"packages/auth-interop-types/index.d.ts",
"packages/firestore/dist/lite/internal.d.ts",
"packages/firestore/dist/internal.d.ts",
Expand Down
12 changes: 10 additions & 2 deletions packages/firestore/lite/register.ts
Expand Up @@ -23,7 +23,10 @@ import {
import { Component, ComponentType } from '@firebase/component';

import { version } from '../package.json';
import { LiteCredentialsProvider } from '../src/api/credentials';
import {
LiteAppCheckTokenProvider,
LiteAuthCredentialsProvider
} from '../src/api/credentials';
import { setSDKVersion } from '../src/core/version';
import { Firestore } from '../src/lite-api/database';
import { FirestoreSettings } from '../src/lite-api/settings';
Expand All @@ -43,7 +46,12 @@ export function registerFirestore(): void {
const app = container.getProvider('app').getImmediate()!;
const firestoreInstance = new Firestore(
app,
new LiteCredentialsProvider(container.getProvider('auth-internal'))
new LiteAuthCredentialsProvider(
container.getProvider('auth-internal')
),
new LiteAppCheckTokenProvider(
container.getProvider('app-check-internal')
)
);
if (settings) {
firestoreInstance._setSettings(settings);
Expand Down
3 changes: 2 additions & 1 deletion packages/firestore/src/api.ts
Expand Up @@ -156,4 +156,5 @@ export { FieldPath as _FieldPath } from './model/path';
export type { ResourcePath as _ResourcePath } from './model/path';
export type { ByteString as _ByteString } from './util/byte_string';
export { logWarn as _logWarn } from './util/log';
export { EmptyCredentialsProvider as _EmptyCredentialsProvider } from './api/credentials';
export { EmptyAuthCredentialsProvider as _EmptyAuthCredentialsProvider } from './api/credentials';
export { EmptyAppCheckTokenProvider as _EmptyAppCheckTokenProvider } from './api/credentials';

0 comments on commit 086df7c

Please sign in to comment.