@react-native-firebase/app-check 26.0.0 → 26.2.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 +13 -0
- package/RNFBAppCheck.podspec +2 -1
- package/dist/module/index.js +13 -6
- 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/types/internal.d.ts +4 -2
- package/dist/typescript/lib/types/internal.d.ts.map +1 -1
- package/dist/typescript/lib/version.d.ts +1 -1
- package/ios/RNFBAppCheck/RNFBAppCheckModule.mm +57 -5
- package/ios/RNFBAppCheck/RNFBAppCheckProvider.h +11 -1
- package/ios/RNFBAppCheck/RNFBAppCheckProvider.m +24 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.h +3 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.m +12 -6
- package/lib/index.ts +14 -6
- package/lib/types/internal.ts +4 -2
- package/lib/version.ts +1 -1
- package/package.json +6 -6
- package/plugin/build/ios/appDelegate.js +3 -2
- package/plugin/src/ios/appDelegate.ts +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,19 @@
|
|
|
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
|
+
## [26.2.0](https://github.com/invertase/react-native-firebase/compare/v26.1.0...v26.2.0) (2026-08-10)
|
|
7
|
+
|
|
8
|
+
### Bug Fixes
|
|
9
|
+
|
|
10
|
+
- **app-check, ios:** do not install debug provider before configure ([#9166](https://github.com/invertase/react-native-firebase/issues/9166)) ([b7879cd](https://github.com/invertase/react-native-firebase/commit/b7879cdde1c78e80e364ecd8966a9f0f45cd5220))
|
|
11
|
+
- codegen should be wipe-then-regen ([04bc4e4](https://github.com/invertase/react-native-firebase/commit/04bc4e4cdab9870cb366fd212b2ccb331b0289d6))
|
|
12
|
+
|
|
13
|
+
## [26.1.0](https://github.com/invertase/react-native-firebase/compare/v26.0.0...v26.1.0) (2026-08-03)
|
|
14
|
+
|
|
15
|
+
### Features
|
|
16
|
+
|
|
17
|
+
- **ios:** add SPM dependency resolution support alongside CocoaPods ([#8933](https://github.com/invertase/react-native-firebase/issues/8933)) ([44a7a9a](https://github.com/invertase/react-native-firebase/commit/44a7a9ae7b404f412e9766c0417f1df8fa971a0b))
|
|
18
|
+
|
|
6
19
|
## [26.0.0](https://github.com/invertase/react-native-firebase/compare/v25.1.0...v26.0.0) (2026-07-29)
|
|
7
20
|
|
|
8
21
|
### ⚠ BREAKING CHANGES
|
package/RNFBAppCheck.podspec
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require 'json'
|
|
2
|
+
require_relative '../app/firebase_spm'
|
|
2
3
|
package = JSON.parse(File.read(File.join(__dir__, 'package.json')))
|
|
3
4
|
appPackage = JSON.parse(File.read(File.join('..', 'app', 'package.json')))
|
|
4
5
|
|
|
@@ -56,7 +57,7 @@ Pod::Spec.new do |s|
|
|
|
56
57
|
end
|
|
57
58
|
|
|
58
59
|
# Firebase dependencies
|
|
59
|
-
s
|
|
60
|
+
firebase_dependency(s, firebase_sdk_version, ['FirebaseAppCheck'], 'Firebase/AppCheck')
|
|
60
61
|
|
|
61
62
|
if defined?($RNFirebaseAsStaticFramework)
|
|
62
63
|
Pod::UI.puts "#{s.name}: Using overridden static_framework value of '#{$RNFirebaseAsStaticFramework}'"
|
package/dist/module/index.js
CHANGED
|
@@ -100,24 +100,31 @@ class FirebaseAppCheckModule extends FirebaseModule {
|
|
|
100
100
|
if (!isBoolean(options.isTokenAutoRefreshEnabled)) {
|
|
101
101
|
options.isTokenAutoRefreshEnabled = true;
|
|
102
102
|
}
|
|
103
|
-
|
|
103
|
+
const isTokenAutoRefreshEnabled = options.isTokenAutoRefreshEnabled;
|
|
104
104
|
if (!hasProviderOptions(options.provider)) {
|
|
105
105
|
throw new Error('Invalid configuration: no provider or no provider options defined.');
|
|
106
106
|
}
|
|
107
107
|
const provider = options.provider;
|
|
108
|
+
|
|
109
|
+
// AppCheck-AD-4: attach the real provider before enabling auto-refresh so early
|
|
110
|
+
// refresh does not run while the native facade is still pending.
|
|
111
|
+
let configurePromise;
|
|
108
112
|
if (Platform.OS === 'android') {
|
|
109
113
|
if (!isString(provider.providerOptions?.android?.provider)) {
|
|
110
114
|
throw new Error('Invalid configuration: no android provider configured while on android platform.');
|
|
111
115
|
}
|
|
112
|
-
|
|
113
|
-
}
|
|
114
|
-
if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
116
|
+
configurePromise = this.native.configureProvider(provider.providerOptions.android.provider, provider.providerOptions.android.debugToken);
|
|
117
|
+
} else if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
115
118
|
if (!isString(provider.providerOptions?.apple?.provider)) {
|
|
116
119
|
throw new Error('Invalid configuration: no apple provider configured while on apple platform.');
|
|
117
120
|
}
|
|
118
|
-
|
|
121
|
+
configurePromise = this.native.configureProvider(provider.providerOptions.apple.provider, provider.providerOptions.apple.debugToken);
|
|
122
|
+
} else {
|
|
123
|
+
throw new Error('Unsupported platform: ' + Platform.OS);
|
|
119
124
|
}
|
|
120
|
-
|
|
125
|
+
return Promise.resolve(configurePromise).then(() => {
|
|
126
|
+
this.native.setTokenAutoRefreshEnabled(isTokenAutoRefreshEnabled);
|
|
127
|
+
});
|
|
121
128
|
}
|
|
122
129
|
activate(siteKeyOrProvider, isTokenAutoRefreshEnabled) {
|
|
123
130
|
if (isOther) {
|
package/dist/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["isBoolean","isIOS","isObject","isString","isUndefined","isOther","parseListenerOrObserver","FirebaseModule","getOrCreateModularInstance","Platform","setReactNativeModule","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","
|
|
1
|
+
{"version":3,"names":["isBoolean","isIOS","isObject","isString","isUndefined","isOther","parseListenerOrObserver","FirebaseModule","getOrCreateModularInstance","Platform","setReactNativeModule","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 = "26.
|
|
4
|
+
export declare const SDK_VERSION = "26.2.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;AAM9D,OAAO,kBAAkB,CAAC;AAK1B,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EAEf,mBAAmB,EACnB,eAAe,EACf,WAAW,EACZ,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../lib/index.ts"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAM9D,OAAO,kBAAkB,CAAC;AAK1B,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"}
|
|
@@ -22,8 +22,10 @@ export type AppCheckInternal = AppCheck & {
|
|
|
22
22
|
initializeAppCheck(options: AppCheckOptions): Promise<void>;
|
|
23
23
|
/**
|
|
24
24
|
* Activate App Check
|
|
25
|
-
* On iOS App Check
|
|
26
|
-
* the specific value (if configured) in firebase.json
|
|
25
|
+
* On iOS calling this activates App Check with the DeviceCheck provider, using the token auto refresh default or
|
|
26
|
+
* the specific value (if configured) in firebase.json. Before `activate` or `initializeAppCheck` is called, the
|
|
27
|
+
* native App Check provider is pending and `getToken` / `getLimitedUseToken` fail closed with
|
|
28
|
+
* `appCheck/provider-not-ready`.
|
|
27
29
|
* On Android if you call this it will install the PlayIntegrity provider in release builds, the Debug provider if debuggable.
|
|
28
30
|
* On both platforms you may use this method to alter the token refresh setting after startup.
|
|
29
31
|
* On iOS if you want to set a specific AppCheckProviderFactory (for instance to FIRAppCheckDebugProviderFactory or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,yCAAyC,EACzC,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAC;AAExE,KAAK,sBAAsB,GAAG,mBAAmB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IACxC,qDAAqD;IACrD,GAAG,EAAE,WAAW,CAAC;IAEjB;;OAEG;IACH,sCAAsC,IAAI,mCAAmC,CAAC;IAE9E;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D
|
|
1
|
+
{"version":3,"file":"internal.d.ts","sourceRoot":"","sources":["../../../../lib/types/internal.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,KAAK,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,EACf,yCAAyC,EACzC,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,mCAAmC,EAAE,MAAM,cAAc,CAAC;AAExE,KAAK,sBAAsB,GAAG,mBAAmB,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAEjF,MAAM,MAAM,gBAAgB,GAAG,QAAQ,GAAG;IACxC,qDAAqD;IACrD,GAAG,EAAE,WAAW,CAAC;IAEjB;;OAEG;IACH,sCAAsC,IAAI,mCAAmC,CAAC;IAE9E;;;;;;;OAOG;IACH,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D;;;;;;;;;;;;;;;;;;;OAmBG;IACH,QAAQ,CACN,iBAAiB,EAAE,MAAM,GAAG,gBAAgB,EAC5C,yBAAyB,CAAC,EAAE,OAAO,GAClC,OAAO,CAAC,IAAI,CAAC,CAAC;IAEjB;;;;;OAKG;IACH,0BAA0B,CAAC,yBAAyB,EAAE,OAAO,GAAG,IAAI,CAAC;IAErE;;;;;;;;OAQG;IACH,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAE/D;;;;;OAKG;IACH,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEnD;;;;;;;OAOG;IACH,cAAc,CAAC,QAAQ,EAAE,eAAe,CAAC,sBAAsB,CAAC,GAAG,MAAM,IAAI,CAAC;IAE9E;;;;;;;;;;;;;;;;OAgBG;IACH,cAAc,CACZ,MAAM,EAAE,CAAC,WAAW,EAAE,sBAAsB,KAAK,IAAI,EACrD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,YAAY,CAAC,EAAE,MAAM,IAAI,GACxB,WAAW,CAAC;IAEf;;OAEG;IACH,cAAc,CACZ,gBAAgB,EACZ,eAAe,CAAC,mBAAmB,CAAC,GACpC,CAAC,CAAC,WAAW,EAAE,mBAAmB,KAAK,IAAI,CAAC,EAChD,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,EAChC,YAAY,CAAC,EAAE,MAAM,IAAI,GACxB,WAAW,CAAC;CAChB,CAAC;AAEF;;;GAGG;AACH,MAAM,MAAM,mBAAmB,GAC3B,mCAAmC,GACnC,yCAAyC,CAAC;AAE9C;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IACjC,kBAAkB,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAE5D,0BAA0B,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAEnE,iBAAiB,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAExE,QAAQ,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAC9D,kBAAkB,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAAC;IAEnD,mBAAmB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,sBAAsB,IAAI,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAChD;AAED,OAAO,QAAQ,+DAA+D,CAAC;IAC7E,UAAU,gCAAgC;QACxC,uBAAuB,EAAE,kBAAkB,CAAC;KAC7C;CACF"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "26.
|
|
1
|
+
export declare const version = "26.2.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -15,8 +15,15 @@
|
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
#if __has_include(<Firebase/Firebase.h>)
|
|
18
19
|
#import <Firebase/Firebase.h>
|
|
19
|
-
#
|
|
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
|
|
20
27
|
|
|
21
28
|
#import <React/RCTInvalidating.h>
|
|
22
29
|
#import <React/RCTUtils.h>
|
|
@@ -117,21 +124,62 @@ RCT_EXPORT_MODULE(NativeRNFBTurboAppCheck)
|
|
|
117
124
|
resolve([NSNumber numberWithBool:isTokenAutoRefreshEnabled]);
|
|
118
125
|
}
|
|
119
126
|
|
|
127
|
+
// AppCheck-AD-8: map pending fail-closed to provider-not-ready (not token-error).
|
|
128
|
+
// Walk NSUnderlyingErrorKey because FIRAppCheck wraps non-SDK errors via
|
|
129
|
+
// publicDomainErrorWithError: and drops top-level userInfo[@"code"].
|
|
130
|
+
// Locked message: kRNFBAppCheckProviderNotReadyMessage (RNFBAppCheckProvider.h).
|
|
131
|
+
static NSString *RNFBAppCheckRejectCodeForError(NSError *error) {
|
|
132
|
+
NSError *current = error;
|
|
133
|
+
while (current != nil) {
|
|
134
|
+
id code = current.userInfo[@"code"];
|
|
135
|
+
if ([code isKindOfClass:[NSString class]] && [code isEqualToString:@"provider-not-ready"]) {
|
|
136
|
+
return @"provider-not-ready";
|
|
137
|
+
}
|
|
138
|
+
current = current.userInfo[NSUnderlyingErrorKey];
|
|
139
|
+
if (![current isKindOfClass:[NSError class]]) {
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
return @"token-error";
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
// AppCheck-AD-8 durable path: reject before FIRAppCheck token APIs when the
|
|
147
|
+
// factory-held facade still has a nil delegateProvider (pending / not configured).
|
|
148
|
+
static BOOL RNFBAppCheckRejectIfProviderNotReady(FIRApp *firebaseApp,
|
|
149
|
+
RCTPromiseRejectBlock reject) {
|
|
150
|
+
RNFBAppCheckProviderFactory *factory = [RNFBAppCheckModule sharedInstance].providerFactory;
|
|
151
|
+
RNFBAppCheckProvider *provider = [factory providerForApp:firebaseApp];
|
|
152
|
+
if (provider != nil && provider.delegateProvider != nil) {
|
|
153
|
+
return NO;
|
|
154
|
+
}
|
|
155
|
+
DLog(@"RNFBAppCheck - provider not ready for app %@ (delegateProvider nil)", firebaseApp.name);
|
|
156
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
157
|
+
userInfo:(NSMutableDictionary *)@{
|
|
158
|
+
@"code" : @"provider-not-ready",
|
|
159
|
+
@"message" : kRNFBAppCheckProviderNotReadyMessage,
|
|
160
|
+
}];
|
|
161
|
+
return YES;
|
|
162
|
+
}
|
|
163
|
+
|
|
120
164
|
- (void)getToken:(NSString *)appName
|
|
121
165
|
forceRefresh:(BOOL)forceRefresh
|
|
122
166
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
123
167
|
reject:(RCTPromiseRejectBlock)reject {
|
|
124
168
|
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
125
|
-
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
126
169
|
DLog(@"appName %@", firebaseApp.name);
|
|
170
|
+
if (RNFBAppCheckRejectIfProviderNotReady(firebaseApp, reject)) {
|
|
171
|
+
return;
|
|
172
|
+
}
|
|
173
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
127
174
|
[appCheck
|
|
128
175
|
tokenForcingRefresh:forceRefresh
|
|
129
176
|
completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
|
|
130
177
|
if (error != nil) {
|
|
131
178
|
DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token: %@", error);
|
|
179
|
+
NSString *code = RNFBAppCheckRejectCodeForError(error);
|
|
132
180
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
133
181
|
userInfo:(NSMutableDictionary *)@{
|
|
134
|
-
@"code" :
|
|
182
|
+
@"code" : code,
|
|
135
183
|
@"message" : [error localizedDescription],
|
|
136
184
|
}];
|
|
137
185
|
return;
|
|
@@ -156,15 +204,19 @@ RCT_EXPORT_MODULE(NativeRNFBTurboAppCheck)
|
|
|
156
204
|
resolve:(RCTPromiseResolveBlock)resolve
|
|
157
205
|
reject:(RCTPromiseRejectBlock)reject {
|
|
158
206
|
FIRApp *firebaseApp = [RCTConvert firAppFromString:appName];
|
|
159
|
-
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
160
207
|
DLog(@"appName %@", firebaseApp.name);
|
|
208
|
+
if (RNFBAppCheckRejectIfProviderNotReady(firebaseApp, reject)) {
|
|
209
|
+
return;
|
|
210
|
+
}
|
|
211
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
161
212
|
[appCheck limitedUseTokenWithCompletion:^(FIRAppCheckToken *_Nullable token,
|
|
162
213
|
NSError *_Nullable error) {
|
|
163
214
|
if (error != nil) {
|
|
164
215
|
DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token: %@", error);
|
|
216
|
+
NSString *code = RNFBAppCheckRejectCodeForError(error);
|
|
165
217
|
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
166
218
|
userInfo:(NSMutableDictionary *)@{
|
|
167
|
-
@"code" :
|
|
219
|
+
@"code" : code,
|
|
168
220
|
@"message" : [error localizedDescription],
|
|
169
221
|
}];
|
|
170
222
|
return;
|
|
@@ -15,8 +15,18 @@
|
|
|
15
15
|
*
|
|
16
16
|
*/
|
|
17
17
|
|
|
18
|
+
#if __has_include(<Firebase/Firebase.h>)
|
|
18
19
|
#import <Firebase/Firebase.h>
|
|
19
|
-
#
|
|
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
|
+
// AppCheck-AD-8 locked message (Provider pending error + Module early reject).
|
|
29
|
+
FOUNDATION_EXPORT NSString *const kRNFBAppCheckProviderNotReadyMessage;
|
|
20
30
|
|
|
21
31
|
@interface RNFBAppCheckProvider : NSObject <FIRAppCheckProvider>
|
|
22
32
|
|
|
@@ -17,6 +17,9 @@
|
|
|
17
17
|
#import "RNFBAppCheckProvider.h"
|
|
18
18
|
#import "RNFBApp/RNFBSharedUtils.h"
|
|
19
19
|
|
|
20
|
+
NSString *const kRNFBAppCheckProviderNotReadyMessage =
|
|
21
|
+
@"App Check provider is not ready. Call initializeAppCheck before requesting tokens.";
|
|
22
|
+
|
|
20
23
|
@implementation RNFBAppCheckProvider
|
|
21
24
|
|
|
22
25
|
- (id)initWithApp:app {
|
|
@@ -85,14 +88,35 @@
|
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
|
|
91
|
+
// AppCheck-AD-8: fail closed while pending — no network / no exchangeDebugToken.
|
|
92
|
+
static NSError *RNFBAppCheckProviderNotReadyError(void) {
|
|
93
|
+
return [NSError errorWithDomain:@"RNFBErrorDomain"
|
|
94
|
+
code:666
|
|
95
|
+
userInfo:@{
|
|
96
|
+
@"code" : @"provider-not-ready",
|
|
97
|
+
@"message" : kRNFBAppCheckProviderNotReadyMessage,
|
|
98
|
+
NSLocalizedDescriptionKey : kRNFBAppCheckProviderNotReadyMessage,
|
|
99
|
+
}];
|
|
100
|
+
}
|
|
101
|
+
|
|
88
102
|
- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
|
|
89
103
|
NSError *_Nullable))handler {
|
|
104
|
+
if (self.delegateProvider == nil) {
|
|
105
|
+
DLog(@"getTokenWithCompletion: provider not ready (nil delegateProvider)");
|
|
106
|
+
handler(nil, RNFBAppCheckProviderNotReadyError());
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
90
109
|
DLog(@"proxying getTokenWithCompletion to delegateProvider...");
|
|
91
110
|
[self.delegateProvider getTokenWithCompletion:handler];
|
|
92
111
|
}
|
|
93
112
|
|
|
94
113
|
- (void)getLimitedUseTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
|
|
95
114
|
NSError *_Nullable))handler {
|
|
115
|
+
if (self.delegateProvider == nil) {
|
|
116
|
+
DLog(@"getLimitedUseTokenWithCompletion: provider not ready (nil delegateProvider)");
|
|
117
|
+
handler(nil, RNFBAppCheckProviderNotReadyError());
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
96
120
|
DLog(@"proxying getLimitedUseTokenWithCompletion to delegateProvider...");
|
|
97
121
|
[self.delegateProvider getLimitedUseTokenWithCompletion:handler];
|
|
98
122
|
}
|
|
@@ -25,4 +25,7 @@
|
|
|
25
25
|
providerName:(NSString *_Nonnull)providerName
|
|
26
26
|
debugToken:(NSString *_Nullable)debugToken;
|
|
27
27
|
|
|
28
|
+
/** Returns the factory-held facade for `app`, or nil if none exists yet. */
|
|
29
|
+
- (RNFBAppCheckProvider *_Nullable)providerForApp:(FIRApp *_Nonnull)app;
|
|
30
|
+
|
|
28
31
|
@end
|
|
@@ -23,19 +23,18 @@
|
|
|
23
23
|
- (nullable id<FIRAppCheckProvider>)createProviderWithApp:(FIRApp *)app {
|
|
24
24
|
DLog(@"appName %@", app.name);
|
|
25
25
|
|
|
26
|
-
//
|
|
27
|
-
//
|
|
28
|
-
// pre-configure
|
|
26
|
+
// Firebase may call this during FirebaseApp.configure() before JS runs
|
|
27
|
+
// configureProvider. Install a pending facade only (AppCheck-AD-1).
|
|
29
28
|
if (self.providers == nil) {
|
|
30
29
|
DLog(@"providers dictionary initializing for app %@", app.name);
|
|
31
30
|
self.providers = [NSMutableDictionary new];
|
|
32
31
|
}
|
|
33
32
|
|
|
34
33
|
if (self.providers[app.name] == nil) {
|
|
35
|
-
|
|
34
|
+
// AppCheck-AD-1 / AD-2: facade only until configureProvider; no real provider
|
|
35
|
+
// (debug/App Attest/etc.) before JS/native configure. Same path DEBUG and release.
|
|
36
|
+
DLog(@"provider initializing (pending, no delegate) for app %@", app.name);
|
|
36
37
|
self.providers[app.name] = [RNFBAppCheckProvider new];
|
|
37
|
-
RNFBAppCheckProvider *provider = self.providers[app.name];
|
|
38
|
-
[provider configure:app providerName:@"debug" debugToken:nil];
|
|
39
38
|
}
|
|
40
39
|
|
|
41
40
|
return self.providers[app.name];
|
|
@@ -58,4 +57,11 @@
|
|
|
58
57
|
[provider configure:app providerName:providerName debugToken:debugToken];
|
|
59
58
|
}
|
|
60
59
|
|
|
60
|
+
- (RNFBAppCheckProvider *)providerForApp:(FIRApp *)app {
|
|
61
|
+
if (app == nil || self.providers == nil) {
|
|
62
|
+
return nil;
|
|
63
|
+
}
|
|
64
|
+
return self.providers[app.name];
|
|
65
|
+
}
|
|
66
|
+
|
|
61
67
|
@end
|
package/lib/index.ts
CHANGED
|
@@ -152,35 +152,43 @@ class FirebaseAppCheckModule extends FirebaseModule<typeof nativeModuleName> {
|
|
|
152
152
|
if (!isBoolean(options.isTokenAutoRefreshEnabled)) {
|
|
153
153
|
options.isTokenAutoRefreshEnabled = true;
|
|
154
154
|
}
|
|
155
|
-
|
|
155
|
+
const isTokenAutoRefreshEnabled = options.isTokenAutoRefreshEnabled as boolean;
|
|
156
156
|
|
|
157
157
|
if (!hasProviderOptions(options.provider)) {
|
|
158
158
|
throw new Error('Invalid configuration: no provider or no provider options defined.');
|
|
159
159
|
}
|
|
160
160
|
const provider = options.provider;
|
|
161
|
+
|
|
162
|
+
// AppCheck-AD-4: attach the real provider before enabling auto-refresh so early
|
|
163
|
+
// refresh does not run while the native facade is still pending.
|
|
164
|
+
let configurePromise: Promise<void>;
|
|
161
165
|
if (Platform.OS === 'android') {
|
|
162
166
|
if (!isString(provider.providerOptions?.android?.provider)) {
|
|
163
167
|
throw new Error(
|
|
164
168
|
'Invalid configuration: no android provider configured while on android platform.',
|
|
165
169
|
);
|
|
166
170
|
}
|
|
167
|
-
|
|
171
|
+
configurePromise = this.native.configureProvider(
|
|
168
172
|
provider.providerOptions.android.provider,
|
|
169
173
|
provider.providerOptions.android.debugToken,
|
|
170
174
|
);
|
|
171
|
-
}
|
|
172
|
-
if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
175
|
+
} else if (Platform.OS === 'ios' || Platform.OS === 'macos') {
|
|
173
176
|
if (!isString(provider.providerOptions?.apple?.provider)) {
|
|
174
177
|
throw new Error(
|
|
175
178
|
'Invalid configuration: no apple provider configured while on apple platform.',
|
|
176
179
|
);
|
|
177
180
|
}
|
|
178
|
-
|
|
181
|
+
configurePromise = this.native.configureProvider(
|
|
179
182
|
provider.providerOptions.apple.provider,
|
|
180
183
|
provider.providerOptions.apple.debugToken,
|
|
181
184
|
);
|
|
185
|
+
} else {
|
|
186
|
+
throw new Error('Unsupported platform: ' + Platform.OS);
|
|
182
187
|
}
|
|
183
|
-
|
|
188
|
+
|
|
189
|
+
return Promise.resolve(configurePromise).then(() => {
|
|
190
|
+
this.native.setTokenAutoRefreshEnabled(isTokenAutoRefreshEnabled);
|
|
191
|
+
});
|
|
184
192
|
}
|
|
185
193
|
|
|
186
194
|
activate(
|
package/lib/types/internal.ts
CHANGED
|
@@ -33,8 +33,10 @@ export type AppCheckInternal = AppCheck & {
|
|
|
33
33
|
|
|
34
34
|
/**
|
|
35
35
|
* Activate App Check
|
|
36
|
-
* On iOS App Check
|
|
37
|
-
* the specific value (if configured) in firebase.json
|
|
36
|
+
* On iOS calling this activates App Check with the DeviceCheck provider, using the token auto refresh default or
|
|
37
|
+
* the specific value (if configured) in firebase.json. Before `activate` or `initializeAppCheck` is called, the
|
|
38
|
+
* native App Check provider is pending and `getToken` / `getLimitedUseToken` fail closed with
|
|
39
|
+
* `appCheck/provider-not-ready`.
|
|
38
40
|
* On Android if you call this it will install the PlayIntegrity provider in release builds, the Debug provider if debuggable.
|
|
39
41
|
* On both platforms you may use this method to alter the token refresh setting after startup.
|
|
40
42
|
* On iOS if you want to set a specific AppCheckProviderFactory (for instance to FIRAppCheckDebugProviderFactory or
|
package/lib/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
// Generated by genversion.
|
|
2
|
-
export const version = '26.
|
|
2
|
+
export const version = '26.2.0';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-native-firebase/app-check",
|
|
3
|
-
"version": "26.
|
|
3
|
+
"version": "26.2.0",
|
|
4
4
|
"author": "Invertase <oss@invertase.io> (http://invertase.io)",
|
|
5
5
|
"description": "React Native Firebase - App Check",
|
|
6
6
|
"main": "./dist/module/index.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"compile": "bob build",
|
|
28
28
|
"prepare": "yarn run build && yarn compile && yarn run build:plugin",
|
|
29
29
|
"codegen": "yarn android:codegen && yarn ios:codegen",
|
|
30
|
-
"android:codegen": "npx @react-native-community/cli codegen --platform android --outputPath=./android/src/main/java/io/invertase/firebase/appcheck/generated",
|
|
31
|
-
"ios:codegen": "npx @react-native-community/cli codegen --platform ios --outputPath=./ios/generated"
|
|
30
|
+
"android:codegen": "rimraf android/src/main/java/io/invertase/firebase/appcheck/generated && npx @react-native-community/cli codegen --platform android --outputPath=./android/src/main/java/io/invertase/firebase/appcheck/generated",
|
|
31
|
+
"ios:codegen": "rimraf ios/generated && npx @react-native-community/cli codegen --platform ios --outputPath=./ios/generated"
|
|
32
32
|
},
|
|
33
33
|
"repository": {
|
|
34
34
|
"type": "git",
|
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
"appCheck"
|
|
44
44
|
],
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@react-native-firebase/app": "26.
|
|
46
|
+
"@react-native-firebase/app": "26.2.0",
|
|
47
47
|
"expo": ">=47.0.0"
|
|
48
48
|
},
|
|
49
49
|
"devDependencies": {
|
|
50
|
-
"@react-native-firebase/app": "26.
|
|
50
|
+
"@react-native-firebase/app": "26.2.0",
|
|
51
51
|
"expo": "^55.0.18",
|
|
52
52
|
"react-native-builder-bob": "^0.41.0",
|
|
53
53
|
"typescript": "^6.0.3"
|
|
@@ -99,5 +99,5 @@
|
|
|
99
99
|
"node_modules/",
|
|
100
100
|
"dist/"
|
|
101
101
|
],
|
|
102
|
-
"gitHead": "
|
|
102
|
+
"gitHead": "b7efa8ca2781b5102975ee5169ee6fc52e9c1588"
|
|
103
103
|
}
|
|
@@ -121,8 +121,9 @@ function modifySwiftAppDelegate(contents) {
|
|
|
121
121
|
FirebaseApp.configure()
|
|
122
122
|
`);
|
|
123
123
|
}
|
|
124
|
-
// If Firebase initialization block not found,
|
|
125
|
-
//
|
|
124
|
+
// If Firebase initialization block not found, register the App Check provider factory
|
|
125
|
+
// then call FirebaseApp.configure(). Firebase requires the factory before configure
|
|
126
|
+
// (AppCheck-AD-3); do not reverse this order.
|
|
126
127
|
const methodInvocationBlock = `RNFBAppCheckModule.sharedInstance()
|
|
127
128
|
FirebaseApp.configure()`;
|
|
128
129
|
const methodInvocationLineMatcher = /(?:factory\.startReactNative\()/;
|
|
@@ -141,8 +141,9 @@ export function modifySwiftAppDelegate(contents: string): string {
|
|
|
141
141
|
);
|
|
142
142
|
}
|
|
143
143
|
|
|
144
|
-
// If Firebase initialization block not found,
|
|
145
|
-
//
|
|
144
|
+
// If Firebase initialization block not found, register the App Check provider factory
|
|
145
|
+
// then call FirebaseApp.configure(). Firebase requires the factory before configure
|
|
146
|
+
// (AppCheck-AD-3); do not reverse this order.
|
|
146
147
|
const methodInvocationBlock = `RNFBAppCheckModule.sharedInstance()
|
|
147
148
|
FirebaseApp.configure()`;
|
|
148
149
|
|