@react-native-firebase/app-check 26.4.0 → 27.0.0
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/CHANGELOG.md +16 -0
- package/RNFBAppCheck.podspec +8 -2
- package/android/build.gradle +3 -0
- package/android/src/main/java/io/invertase/firebase/appcheck/RNFBAppCheckListenerRegistry.kt +72 -0
- package/dist/module/index.js +1 -2
- package/dist/module/index.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/typescript/lib/index.d.ts +1 -1
- package/dist/typescript/lib/index.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/ios/RNFBAppCheck/RNFBAppCheckHelper.h +61 -0
- package/ios/RNFBAppCheck/RNFBAppCheckHelper.m +213 -0
- package/ios/RNFBAppCheck/RNFBAppCheckModule.mm +22 -155
- package/ios/RNFBAppCheck/RNFBAppCheckRejectCodeMapper.swift +50 -0
- package/ios/RNFBAppCheck.xcodeproj/project.pbxproj +14 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/Firebase/FIRAppCheckHostStub.m +109 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/Firebase/Firebase.h +47 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/RNFBApp/RCTConvert+FIRApp.h +13 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/RNFBApp/RCTConvert+FIRAppHostStub.m +27 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/RNFBApp/RNFBSharedUtils.h +18 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/RNFBApp/RNFBSharedUtilsHostStub.m +18 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/RNFBAppCheck/RNFBAppCheckProviderHostStub.m +48 -0
- package/ios/RNFBAppCheckUnitTests/HostStubs/React/RCTBridgeModule.h +10 -0
- package/ios/RNFBAppCheckUnitTests/RNFBAppCheckHelperHostStubTests.m +197 -0
- package/ios/RNFBAppCheckUnitTests/RNFBAppCheckRejectCodeMapperTests.swift +85 -0
- package/ios/RNFBAppCheckUnitTests/RNFBAppCheckUnitTests.xcodeproj/project.pbxproj +277 -0
- package/ios/RNFBAppCheckUnitTests/RNFBAppCheckUnitTests.xcodeproj/xcshareddata/xcschemes/RNFBAppCheckUnitTests.xcscheme +69 -0
- package/lib/index.ts +1 -1
- package/lib/version.ts +1 -1
- package/package.json +4 -4
- package/plugin/build/ios/appDelegate.js +12 -13
- package/plugin/src/ios/appDelegate.ts +13 -14
- package/android/src/main/java/io/invertase/firebase/appcheck/RNFBAppCheckListenerRegistry.java +0 -76
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,22 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
## [27.0.0](https://github.com/invertase/react-native-firebase/compare/v26.4.0...v27.0.0) (2026-10-19)
|
|
7
|
+
|
|
8
|
+
### ⚠ BREAKING CHANGES
|
|
9
|
+
|
|
10
|
+
- **app, sdk:** bump Firebase Android 35, Apple 13, and JS 13
|
|
11
|
+
|
|
12
|
+
### Features
|
|
13
|
+
|
|
14
|
+
- **app, sdk:** bump Firebase Android 35, Apple 13, and JS 13 ([0ca03d1](https://github.com/invertase/react-native-firebase/commit/0ca03d11b0c271fb37cfbee8a0c3074a21969f0b))
|
|
15
|
+
|
|
16
|
+
### Bug Fixes
|
|
17
|
+
|
|
18
|
+
- **app-check:** drop the unused indent fallback ([c147145](https://github.com/invertase/react-native-firebase/commit/c1471450b06019dd718f59a8a1b4c5bf941cc1bb))
|
|
19
|
+
- **app-check:** install the provider factory before configure ([f366a64](https://github.com/invertase/react-native-firebase/commit/f366a640bd8256c83cfab9a3516ed95f0722534f))
|
|
20
|
+
- **app,database:** resolve platform native module when bundlers apply package exports ([959d91f](https://github.com/invertase/react-native-firebase/commit/959d91fc79d7155d1d9a08e1f836789e6e6d6156))
|
|
21
|
+
|
|
6
22
|
## [26.4.0](https://github.com/invertase/react-native-firebase/compare/v26.3.3...v26.4.0) (2026-09-05)
|
|
7
23
|
|
|
8
24
|
### Bug Fixes
|
package/RNFBAppCheck.podspec
CHANGED
|
@@ -28,18 +28,24 @@ Pod::Spec.new do |s|
|
|
|
28
28
|
s.ios.deployment_target = firebase_ios_target
|
|
29
29
|
s.macos.deployment_target = firebase_macos_target
|
|
30
30
|
s.tvos.deployment_target = firebase_tvos_target
|
|
31
|
-
s.source_files = 'ios/**/*.{h,m,mm,cpp}'
|
|
31
|
+
s.source_files = 'ios/**/*.{h,m,mm,cpp,swift}'
|
|
32
32
|
s.public_header_files = [
|
|
33
33
|
'ios/RNFBAppCheck/RNFBAppCheckModule.h',
|
|
34
34
|
]
|
|
35
35
|
s.private_header_files = [
|
|
36
|
+
'ios/RNFBAppCheck/RNFBAppCheckHelper.h',
|
|
36
37
|
'ios/RNFBAppCheck/RNFBAppCheckProvider.h',
|
|
37
38
|
'ios/RNFBAppCheck/RNFBAppCheckProviderFactory.h',
|
|
38
39
|
'ios/generated/**/*.h',
|
|
39
40
|
]
|
|
40
|
-
|
|
41
|
+
# CocoaPods FileList uses FNM_PATHNAME: `ios/*UnitTests/**` does not match nested
|
|
42
|
+
# files under HostStubs; use `ios/*UnitTests/**/*` (same as sibling packages).
|
|
43
|
+
s.exclude_files = 'ios/generated/RCTThirdPartyComponentsProvider.*', 'ios/generated/RCTAppDependencyProvider.*', 'ios/generated/RCTModuleProviders.*', 'ios/generated/RCTModulesConformingToProtocolsProvider.*', 'ios/generated/RCTUnstableModulesRequiringMainQueueSetupProvider.*', 'ios/*UnitTests/**/*'
|
|
44
|
+
s.swift_version = '5.10'
|
|
41
45
|
|
|
46
|
+
# DEFINES_MODULE is required for the generated RNFBAppCheck-Swift.h interface.
|
|
42
47
|
s.pod_target_xcconfig = {
|
|
48
|
+
"DEFINES_MODULE" => "YES",
|
|
43
49
|
'HEADER_SEARCH_PATHS' => '"$(PODS_TARGET_SRCROOT)/ios/generated/RNFBAppCheckTurboModules" "$(PODS_TARGET_SRCROOT)/ios/generated"',
|
|
44
50
|
"CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES" => "YES",
|
|
45
51
|
}
|
package/android/build.gradle
CHANGED
|
@@ -13,6 +13,7 @@ buildscript {
|
|
|
13
13
|
|
|
14
14
|
dependencies {
|
|
15
15
|
classpath("com.android.tools.build:gradle:8.4.0")
|
|
16
|
+
classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:${project.findProperty('kotlinVersion') ?: '2.4.0'}")
|
|
16
17
|
}
|
|
17
18
|
}
|
|
18
19
|
}
|
|
@@ -21,6 +22,8 @@ plugins {
|
|
|
21
22
|
id 'io.invertase.gradle.build' version '1.5'
|
|
22
23
|
}
|
|
23
24
|
|
|
25
|
+
apply plugin: "org.jetbrains.kotlin.android"
|
|
26
|
+
|
|
24
27
|
def appProject
|
|
25
28
|
if (findProject(':@react-native-firebase_app')) {
|
|
26
29
|
appProject = project(':@react-native-firebase_app')
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
package io.invertase.firebase.appcheck
|
|
2
|
+
|
|
3
|
+
/*
|
|
4
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this library except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*
|
|
18
|
+
*/
|
|
19
|
+
|
|
20
|
+
import io.invertase.firebase.common.RNFBHandleCollisionException
|
|
21
|
+
import io.invertase.firebase.common.RNFBHandleMap
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* App Check token listener map. Unique [put] / [putOrDiscard]; callers [take] or
|
|
25
|
+
* [takeAllAndRemove] then `remove()` outside the HandleMap lock. Skip-if-registered is
|
|
26
|
+
* `get(appName) != null`.
|
|
27
|
+
*/
|
|
28
|
+
internal class RNFBAppCheckListenerRegistry {
|
|
29
|
+
private val map = RNFBHandleMap<String, AppCheckListenerHandle?>()
|
|
30
|
+
|
|
31
|
+
@Throws(RNFBHandleCollisionException::class)
|
|
32
|
+
fun put(
|
|
33
|
+
appName: String,
|
|
34
|
+
handle: AppCheckListenerHandle?,
|
|
35
|
+
) {
|
|
36
|
+
map.put(appName, handle)
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* Unique put. On collision, `remove()` the incoming handle and leave the existing mapping.
|
|
41
|
+
*
|
|
42
|
+
* @return true if stored
|
|
43
|
+
*/
|
|
44
|
+
fun putOrDiscard(
|
|
45
|
+
appName: String,
|
|
46
|
+
handle: AppCheckListenerHandle?,
|
|
47
|
+
): Boolean {
|
|
48
|
+
try {
|
|
49
|
+
map.put(appName, handle)
|
|
50
|
+
return true
|
|
51
|
+
} catch (_: RNFBHandleCollisionException) {
|
|
52
|
+
handle?.remove()
|
|
53
|
+
return false
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
fun get(appName: String): AppCheckListenerHandle? = map.get(appName)
|
|
58
|
+
|
|
59
|
+
fun take(appName: String): AppCheckListenerHandle? = map.take(appName)
|
|
60
|
+
|
|
61
|
+
fun takeAndRemove(appName: String) {
|
|
62
|
+
val handle = map.take(appName)
|
|
63
|
+
handle?.remove()
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
fun takeAllAndRemove() {
|
|
67
|
+
val remaining = map.takeAll()
|
|
68
|
+
for (handle in remaining) {
|
|
69
|
+
handle?.remove()
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
package/dist/module/index.js
CHANGED
|
@@ -18,10 +18,9 @@
|
|
|
18
18
|
*/
|
|
19
19
|
|
|
20
20
|
import { isBoolean, isIOS, isObject, isString, isUndefined, isOther, parseListenerOrObserver } from '@react-native-firebase/app/dist/module/common';
|
|
21
|
-
import { FirebaseModule, getOrCreateModularInstance } from '@react-native-firebase/app/dist/module/internal';
|
|
21
|
+
import { FirebaseModule, getOrCreateModularInstance, setReactNativeModule } from '@react-native-firebase/app/dist/module/internal';
|
|
22
22
|
import "./types/internal.js";
|
|
23
23
|
import { Platform } from 'react-native';
|
|
24
|
-
import { setReactNativeModule } from '@react-native-firebase/app/dist/module/internal/nativeModule';
|
|
25
24
|
import fallBackModule from './web/RNFBAppCheckModule';
|
|
26
25
|
import { version } from "./version.js";
|
|
27
26
|
import { ReactNativeFirebaseAppCheckProvider } from "./providers.js";
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isBoolean","isIOS","isObject","isString","isUndefined","isOther","parseListenerOrObserver","FirebaseModule","getOrCreateModularInstance","
|
|
1
|
+
{"version":3,"names":["isBoolean","isIOS","isObject","isString","isUndefined","isOther","parseListenerOrObserver","FirebaseModule","getOrCreateModularInstance","setReactNativeModule","Platform","fallBackModule","version","ReactNativeFirebaseAppCheckProvider","nativeModuleName","VALID_APPLE_PROVIDERS","VALID_ANDROID_PROVIDERS","hasProviderOptions","provider","undefined","providerOptions","validateProviderName","options","OS","name","android","includes","Error","join","apple","FirebaseAppCheckModule","constructor","app","config","customUrlOrRegion","emitter","addListener","eventNameForApp","event","emit","_listenerCount","getIsTokenRefreshEnabledDefault","isTokenAutoRefreshEnabled","newReactNativeFirebaseAppCheckProvider","initializeAppCheck","native","tokenRefresh","firebaseJson","app_check_token_auto_refresh","dataCollection","app_data_collection_default_enabled","configurePromise","configureProvider","debugToken","Promise","resolve","then","setTokenAutoRefreshEnabled","activate","siteKeyOrProvider","rnfbProvider","configure","web","siteKey","getToken","forceRefresh","getLimitedUseToken","onTokenChanged","onNextOrObserver","_onError","_onCompletion","console","warn","nextFn","subscription","addAppCheckListener","remove","removeAppCheckListener","namespace","nativeEvents","hasMultiAppSupport","hasCustomUrlOrRegionSupport","turboModule","SDK_VERSION","CustomProvider","getModularAppCheck","appCheck","appCheckInstance","isAutoRefreshEnabled","onError","onCompletion"],"sourceRoot":"../../lib","sources":["index.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { FirebaseApp } from '@react-native-firebase/app';
|
|
2
2
|
import './types/internal';
|
|
3
3
|
import type { AppCheck, AppCheckOptions, AppCheckTokenResult, PartialObserver, Unsubscribe } from './types/appcheck';
|
|
4
|
-
export declare const SDK_VERSION = "
|
|
4
|
+
export declare const SDK_VERSION = "27.0.0";
|
|
5
5
|
export { CustomProvider, ReactNativeFirebaseAppCheckProvider } from './providers';
|
|
6
6
|
/**
|
|
7
7
|
* Initializes App Check for the given Firebase app.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAO9D,OAAO,kBAAkB,CAAC;AAI1B,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEf,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAoP1B,eAAO,MAAM,WAAW,WAAU,CAAC;AAEnC,OAAO,EAAE,cAAc,EAAE,mCAAmC,EAAE,MAAM,aAAa,CAAC;AAMlF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,QAAQ,CAQzF;AAED,wBAAgB,QAAQ,CACtB,gBAAgB,EAAE,QAAQ,EAC1B,YAAY,CAAC,EAAE,OAAO,GACrB,OAAO,CAAC,mBAAmB,CAAC,CAE9B;AAED,wBAAgB,kBAAkB,CAAC,gBAAgB,EAAE,QAAQ,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAE3F;AAED,wBAAgB,0BAA0B,CACxC,gBAAgB,EAAE,QAAQ,EAC1B,oBAAoB,EAAE,OAAO,GAC5B,IAAI,CAEN;AAED,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,QAAQ,EAC1B,QAAQ,EAAE,eAAe,CAAC,mBAAmB,CAAC,GAC7C,WAAW,CAAC;AAEf,wBAAgB,cAAc,CAC5B,gBAAgB,EAAE,QAAQ,EAC1B,MAAM,EAAE,CAAC,WAAW,EAAE,mBAAmB,KAAK,IAAI,EAClD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,YAAY,CAAC,EAAE,MAAM,IAAI,GACxB,WAAW,CAAC;AAiBf,mBAAmB,kBAAkB,CAAC"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "
|
|
1
|
+
export declare const version = "27.0.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#import <Foundation/Foundation.h>
|
|
19
|
+
#import <React/RCTBridgeModule.h>
|
|
20
|
+
|
|
21
|
+
// Plain Objective-C helper (see docs/ios-spm.mdx and
|
|
22
|
+
// okf-bundle/ios-spm-native-imports.md) that owns every call touching
|
|
23
|
+
// `FIRAppCheck` / provider factory for RNFBAppCheckModule. This keeps
|
|
24
|
+
// RNFBAppCheckModule.mm free of Firebase App Check imports: under SPM the
|
|
25
|
+
// usable Objective-C surface for App Check is module-backed, and `@import`
|
|
26
|
+
// cannot be used from an Objective-C++ (.mm) TurboModule when C++ modules are
|
|
27
|
+
// disabled (required by React Native's JSI headers).
|
|
28
|
+
@interface RNFBAppCheckHelper : NSObject
|
|
29
|
+
|
|
30
|
+
/** Installs the shared provider factory once (AppDelegate early init path). */
|
|
31
|
+
+ (void)ensureProviderFactoryInstalled;
|
|
32
|
+
|
|
33
|
+
+ (void)activate:(NSString *)appName
|
|
34
|
+
siteKeyProvider:(NSString *)siteKeyProvider
|
|
35
|
+
isTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled
|
|
36
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
37
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
38
|
+
|
|
39
|
+
+ (void)configureProvider:(NSString *)appName
|
|
40
|
+
providerName:(NSString *)providerName
|
|
41
|
+
debugToken:(NSString *)debugToken
|
|
42
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
43
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
44
|
+
|
|
45
|
+
+ (void)setTokenAutoRefreshEnabled:(NSString *)appName
|
|
46
|
+
isTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled;
|
|
47
|
+
|
|
48
|
+
+ (void)isTokenAutoRefreshEnabled:(NSString *)appName
|
|
49
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
50
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
51
|
+
|
|
52
|
+
+ (void)getToken:(NSString *)appName
|
|
53
|
+
forceRefresh:(BOOL)forceRefresh
|
|
54
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
55
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
56
|
+
|
|
57
|
+
+ (void)getLimitedUseToken:(NSString *)appName
|
|
58
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
59
|
+
reject:(RCTPromiseRejectBlock)reject;
|
|
60
|
+
|
|
61
|
+
@end
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2016-present Invertase Limited & Contributors
|
|
3
|
+
*
|
|
4
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
5
|
+
* you may not use this library except in compliance with the License.
|
|
6
|
+
* You may obtain a copy of the License at
|
|
7
|
+
*
|
|
8
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
9
|
+
*
|
|
10
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
11
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
12
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
13
|
+
* See the License for the specific language governing permissions and
|
|
14
|
+
* limitations under the License.
|
|
15
|
+
*
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
#if __has_include(<Firebase/Firebase.h>)
|
|
19
|
+
#import <Firebase/Firebase.h>
|
|
20
|
+
#elif __has_include(<FirebaseAppCheck/FirebaseAppCheck.h>)
|
|
21
|
+
#import <FirebaseAppCheck/FirebaseAppCheck.h>
|
|
22
|
+
#import <FirebaseCore/FirebaseCore.h>
|
|
23
|
+
#else
|
|
24
|
+
@import FirebaseCore;
|
|
25
|
+
@import FirebaseAppCheck;
|
|
26
|
+
#endif
|
|
27
|
+
|
|
28
|
+
#if __has_include(<RNFBAppCheck/RNFBAppCheck-Swift.h>)
|
|
29
|
+
#import <RNFBAppCheck/RNFBAppCheck-Swift.h>
|
|
30
|
+
#elif __has_include("RNFBAppCheck-Swift.h")
|
|
31
|
+
#import "RNFBAppCheck-Swift.h"
|
|
32
|
+
#elif __has_include("RNFBAppCheckRejectCodeMapper-Swift.inc")
|
|
33
|
+
#import "RNFBAppCheckRejectCodeMapper-Swift.inc"
|
|
34
|
+
#else
|
|
35
|
+
#error "RNFBAppCheckRejectCodeMapper Swift interface not found"
|
|
36
|
+
#endif
|
|
37
|
+
|
|
38
|
+
#import "RNFBApp/RCTConvert+FIRApp.h"
|
|
39
|
+
#import "RNFBApp/RNFBSharedUtils.h"
|
|
40
|
+
#import "RNFBAppCheckHelper.h"
|
|
41
|
+
#import "RNFBAppCheckProviderFactory.h"
|
|
42
|
+
|
|
43
|
+
@implementation RNFBAppCheckHelper
|
|
44
|
+
|
|
45
|
+
static RNFBAppCheckProviderFactory *_Nullable RNFBAppCheckSharedProviderFactory(void) {
|
|
46
|
+
static dispatch_once_t once;
|
|
47
|
+
static RNFBAppCheckProviderFactory *factory;
|
|
48
|
+
dispatch_once(&once, ^{
|
|
49
|
+
factory = [[RNFBAppCheckProviderFactory alloc] init];
|
|
50
|
+
[FIRAppCheck setAppCheckProviderFactory:factory];
|
|
51
|
+
});
|
|
52
|
+
return factory;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
+ (void)ensureProviderFactoryInstalled {
|
|
56
|
+
(void)RNFBAppCheckSharedProviderFactory();
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// AppCheck-AD-8 durable path: reject before FIRAppCheck token APIs when the
|
|
60
|
+
// factory-held facade still has a nil delegateProvider (pending / not configured).
|
|
61
|
+
static BOOL RNFBAppCheckRejectIfProviderNotReady(FIRApp *firebaseApp,
|
|
62
|
+
RCTPromiseRejectBlock reject) {
|
|
63
|
+
RNFBAppCheckProviderFactory *factory = RNFBAppCheckSharedProviderFactory();
|
|
64
|
+
RNFBAppCheckProvider *provider = [factory providerForApp:firebaseApp];
|
|
65
|
+
if (provider != nil && provider.delegateProvider != nil) {
|
|
66
|
+
return NO;
|
|
67
|
+
}
|
|
68
|
+
DLog(@"RNFBAppCheck - provider not ready for app %@ (delegateProvider nil)", firebaseApp.name);
|
|
69
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
70
|
+
userInfo:(NSMutableDictionary *)@{
|
|
71
|
+
@"code" : @"provider-not-ready",
|
|
72
|
+
@"message" : kRNFBAppCheckProviderNotReadyMessage,
|
|
73
|
+
}];
|
|
74
|
+
return YES;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
+ (void)activate:(NSString *)appName
|
|
78
|
+
siteKeyProvider:(NSString *)siteKeyProvider
|
|
79
|
+
isTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled
|
|
80
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
81
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
82
|
+
(void)siteKeyProvider;
|
|
83
|
+
(void)reject;
|
|
84
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
85
|
+
DLog(@"deprecated API, provider will be deviceCheck / token refresh %d for app %@",
|
|
86
|
+
isTokenAutoRefreshEnabled, firebaseApp.name);
|
|
87
|
+
[RNFBAppCheckSharedProviderFactory() configure:firebaseApp
|
|
88
|
+
providerName:@"deviceCheck"
|
|
89
|
+
debugToken:nil];
|
|
90
|
+
|
|
91
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
92
|
+
appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
93
|
+
resolve([NSNull null]);
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
+ (void)configureProvider:(NSString *)appName
|
|
97
|
+
providerName:(NSString *)providerName
|
|
98
|
+
debugToken:(NSString *)debugToken
|
|
99
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
100
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
101
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
102
|
+
DLog(@"appName/providerName/debugToken: %@/%@/%@", firebaseApp.name, providerName,
|
|
103
|
+
(debugToken == nil ? @"null" : @"(not shown)"));
|
|
104
|
+
@try {
|
|
105
|
+
[RNFBAppCheckSharedProviderFactory() configure:firebaseApp
|
|
106
|
+
providerName:providerName
|
|
107
|
+
debugToken:debugToken];
|
|
108
|
+
resolve([NSNull null]);
|
|
109
|
+
} @catch (NSException *exception) {
|
|
110
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
111
|
+
userInfo:(NSMutableDictionary *)@{
|
|
112
|
+
@"code" : @"unknown",
|
|
113
|
+
@"message" : exception.reason ?: @"internal-error",
|
|
114
|
+
}];
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
+ (void)setTokenAutoRefreshEnabled:(NSString *)appName
|
|
119
|
+
isTokenAutoRefreshEnabled:(BOOL)isTokenAutoRefreshEnabled {
|
|
120
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
121
|
+
DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
|
|
122
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
123
|
+
appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
+ (void)isTokenAutoRefreshEnabled:(NSString *)appName
|
|
127
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
128
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
129
|
+
(void)reject;
|
|
130
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
131
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
132
|
+
BOOL isTokenAutoRefreshEnabled = appCheck.isTokenAutoRefreshEnabled;
|
|
133
|
+
DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
|
|
134
|
+
resolve([NSNumber numberWithBool:isTokenAutoRefreshEnabled]);
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
+ (void)getToken:(NSString *)appName
|
|
138
|
+
forceRefresh:(BOOL)forceRefresh
|
|
139
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
140
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
141
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
142
|
+
DLog(@"appName %@", firebaseApp.name);
|
|
143
|
+
if (RNFBAppCheckRejectIfProviderNotReady(firebaseApp, reject)) {
|
|
144
|
+
return;
|
|
145
|
+
}
|
|
146
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
147
|
+
[appCheck
|
|
148
|
+
tokenForcingRefresh:forceRefresh
|
|
149
|
+
completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
|
|
150
|
+
if (error != nil) {
|
|
151
|
+
DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token: %@", error);
|
|
152
|
+
NSString *code = [RNFBAppCheckRejectCodeMapper rejectCodeForError:error];
|
|
153
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
154
|
+
userInfo:(NSMutableDictionary *)@{
|
|
155
|
+
@"code" : code,
|
|
156
|
+
@"message" : [error localizedDescription],
|
|
157
|
+
}];
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
if (token == nil) {
|
|
161
|
+
DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token.");
|
|
162
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
163
|
+
userInfo:(NSMutableDictionary *)@{
|
|
164
|
+
@"code" : @"token-null",
|
|
165
|
+
@"message" : @"no token fetched",
|
|
166
|
+
}];
|
|
167
|
+
return;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
|
|
171
|
+
tokenResultDictionary[@"token"] = token.token;
|
|
172
|
+
resolve(tokenResultDictionary);
|
|
173
|
+
}];
|
|
174
|
+
}
|
|
175
|
+
|
|
176
|
+
+ (void)getLimitedUseToken:(NSString *)appName
|
|
177
|
+
resolve:(RCTPromiseResolveBlock)resolve
|
|
178
|
+
reject:(RCTPromiseRejectBlock)reject {
|
|
179
|
+
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
180
|
+
DLog(@"appName %@", firebaseApp.name);
|
|
181
|
+
if (RNFBAppCheckRejectIfProviderNotReady(firebaseApp, reject)) {
|
|
182
|
+
return;
|
|
183
|
+
}
|
|
184
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
185
|
+
[appCheck limitedUseTokenWithCompletion:^(FIRAppCheckToken *_Nullable token,
|
|
186
|
+
NSError *_Nullable error) {
|
|
187
|
+
if (error != nil) {
|
|
188
|
+
DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token: %@", error);
|
|
189
|
+
NSString *code = [RNFBAppCheckRejectCodeMapper rejectCodeForError:error];
|
|
190
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
191
|
+
userInfo:(NSMutableDictionary *)@{
|
|
192
|
+
@"code" : code,
|
|
193
|
+
@"message" : [error localizedDescription],
|
|
194
|
+
}];
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
if (token == nil) {
|
|
198
|
+
DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token.");
|
|
199
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
200
|
+
userInfo:(NSMutableDictionary *)@{
|
|
201
|
+
@"code" : @"token-null",
|
|
202
|
+
@"message" : @"no token fetched",
|
|
203
|
+
}];
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
|
|
208
|
+
tokenResultDictionary[@"token"] = token.token;
|
|
209
|
+
resolve(tokenResultDictionary);
|
|
210
|
+
}];
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
@end
|