@react-native-firebase/app-check 23.8.0 → 23.8.2
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 +788 -0
- package/RNFBAppCheck.podspec +50 -0
- package/android/.editorconfig +10 -0
- package/android/build.gradle +110 -0
- package/android/lint.xml +5 -0
- package/android/settings.gradle +1 -0
- package/android/src/main/AndroidManifest.xml +7 -0
- package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckModule.java +281 -0
- package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckPackage.java +41 -0
- package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProvider.java +97 -0
- package/android/src/main/java/io/invertase/firebase/appcheck/ReactNativeFirebaseAppCheckProviderFactory.java +67 -0
- package/app.plugin.js +1 -0
- package/dist/commonjs/version.js +1 -1
- package/dist/commonjs/web/RNFBAppCheckModule.android.js +3 -2
- package/dist/commonjs/web/RNFBAppCheckModule.android.js.map +1 -2
- package/dist/commonjs/web/RNFBAppCheckModule.ios.js +3 -2
- package/dist/commonjs/web/RNFBAppCheckModule.ios.js.map +1 -2
- package/dist/commonjs/web/RNFBAppCheckModule.js +5 -11
- package/dist/commonjs/web/RNFBAppCheckModule.js.map +1 -1
- package/dist/module/version.js +1 -1
- package/dist/module/web/RNFBAppCheckModule.android.js +3 -2
- package/dist/module/web/RNFBAppCheckModule.android.js.map +1 -2
- package/dist/module/web/RNFBAppCheckModule.ios.js +3 -2
- package/dist/module/web/RNFBAppCheckModule.ios.js.map +1 -2
- package/dist/module/web/RNFBAppCheckModule.js +6 -7
- package/dist/module/web/RNFBAppCheckModule.js.map +1 -1
- package/dist/typescript/commonjs/lib/namespaced.d.ts +1 -1
- package/dist/typescript/commonjs/lib/version.d.ts +1 -1
- package/dist/typescript/module/lib/namespaced.d.ts +1 -1
- package/dist/typescript/module/lib/version.d.ts +1 -1
- package/ios/RNFBAppCheck/RNFBAppCheckModule.h +30 -0
- package/ios/RNFBAppCheck/RNFBAppCheckModule.m +171 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProvider.h +33 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProvider.m +90 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.h +28 -0
- package/ios/RNFBAppCheck/RNFBAppCheckProviderFactory.m +61 -0
- package/ios/RNFBAppCheck.xcodeproj/project.pbxproj +349 -0
- package/ios/RNFBAppCheck.xcodeproj/xcshareddata/IDETemplateMacros.plist +24 -0
- package/lib/version.ts +1 -1
- package/package.json +5 -15
- package/plugin/build/index.d.ts +3 -0
- package/plugin/build/index.js +15 -0
- package/plugin/build/ios/appDelegate.d.ts +6 -0
- package/plugin/build/ios/appDelegate.js +137 -0
- package/plugin/build/ios/index.d.ts +2 -0
- package/plugin/build/ios/index.js +5 -0
- package/plugin/tsconfig.tsbuildinfo +1 -0
- package/lib/web/RNFBAppCheckModule.android.js +0 -2
- package/lib/web/RNFBAppCheckModule.ios.js +0 -2
- package/lib/web/RNFBAppCheckModule.js +0 -95
package/dist/commonjs/version.js
CHANGED
|
@@ -5,5 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
// No-op for android.
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const _module = {};
|
|
9
|
+
var _default = exports.default = _module;
|
|
10
|
+
//# sourceMappingURL=RNFBAppCheckModule.android.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.
|
|
2
|
-
AC,OAAA,GAE1BH,OAAM","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["module","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,OAA6B,GAAG,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1BH,OAAM","ignoreList":[]}
|
|
@@ -5,5 +5,6 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
5
5
|
});
|
|
6
6
|
exports.default = void 0;
|
|
7
7
|
// No-op for ios.
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
const _module = {};
|
|
9
|
+
var _default = exports.default = _module;
|
|
10
|
+
//# sourceMappingURL=RNFBAppCheckModule.ios.js.map
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.
|
|
2
|
-
AC,OAAA,GAE1BH,OAAM","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["module","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.ts"],"mappings":";;;;;;AAAA;AACA,MAAMA,OAA6B,GAAG,CAAC,CAAC;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAC,OAAA,GAE1BH,OAAM","ignoreList":[]}
|
|
@@ -14,14 +14,13 @@ function getAppCheckInstanceForApp(appName) {
|
|
|
14
14
|
}
|
|
15
15
|
return appCheckInstances[appName];
|
|
16
16
|
}
|
|
17
|
-
|
|
18
17
|
/**
|
|
19
18
|
* This is a 'NativeModule' for the web platform.
|
|
20
19
|
* Methods here are identical to the ones found in
|
|
21
20
|
* the native android/ios modules e.g. `@ReactMethod` annotated
|
|
22
21
|
* java methods on Android.
|
|
23
22
|
*/
|
|
24
|
-
|
|
23
|
+
const _module = {
|
|
25
24
|
initializeAppCheck(appName, options) {
|
|
26
25
|
(0, _firebaseAppCheck.makeIDBAvailable)();
|
|
27
26
|
return (0, _utils.guard)(async () => {
|
|
@@ -34,21 +33,22 @@ var _default = exports.default = {
|
|
|
34
33
|
} = options;
|
|
35
34
|
const _provider = new _firebaseAppCheck.CustomProvider({
|
|
36
35
|
getToken() {
|
|
37
|
-
|
|
36
|
+
if ('getToken' in provider && typeof provider.getToken === 'function') {
|
|
37
|
+
return provider.getToken();
|
|
38
|
+
}
|
|
39
|
+
throw new Error('Provider does not have a getToken method');
|
|
38
40
|
}
|
|
39
41
|
});
|
|
40
42
|
appCheckInstances[appName] = (0, _firebaseAppCheck.initializeAppCheck)((0, _firebaseAppCheck.getApp)(appName), {
|
|
41
43
|
provider: _provider,
|
|
42
44
|
isTokenAutoRefreshEnabled
|
|
43
45
|
});
|
|
44
|
-
return null;
|
|
45
46
|
});
|
|
46
47
|
},
|
|
47
48
|
setTokenAutoRefreshEnabled(appName, isTokenAutoRefreshEnabled) {
|
|
48
49
|
return (0, _utils.guard)(async () => {
|
|
49
50
|
const instance = getAppCheckInstanceForApp(appName);
|
|
50
51
|
(0, _firebaseAppCheck.setTokenAutoRefreshEnabled)(instance, isTokenAutoRefreshEnabled);
|
|
51
|
-
return null;
|
|
52
52
|
});
|
|
53
53
|
},
|
|
54
54
|
getLimitedUseToken(appName) {
|
|
@@ -75,7 +75,6 @@ var _default = exports.default = {
|
|
|
75
75
|
...tokenResult
|
|
76
76
|
});
|
|
77
77
|
});
|
|
78
|
-
return null;
|
|
79
78
|
});
|
|
80
79
|
},
|
|
81
80
|
removeAppCheckListener(appName) {
|
|
@@ -85,11 +84,6 @@ var _default = exports.default = {
|
|
|
85
84
|
}
|
|
86
85
|
listenersForApp[appName]();
|
|
87
86
|
delete listenersForApp[appName];
|
|
88
|
-
return null;
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
};
|
|
92
|
-
//# sourceMappingURL=RNFBAppCheckModule.js.mappp[appName];
|
|
93
87
|
});
|
|
94
88
|
}
|
|
95
89
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_firebaseAppCheck","require","_utils","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","
|
|
1
|
+
{"version":3,"names":["_firebaseAppCheck","require","_utils","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","module","initializeAppCheck","options","makeIDBAvailable","guard","provider","isTokenAutoRefreshEnabled","_provider","CustomProvider","getToken","getApp","setTokenAutoRefreshEnabled","instance","getLimitedUseToken","forceRefresh","addAppCheckListener","onTokenChanged","tokenResult","emitEvent","removeAppCheckListener","_default","exports","default"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ts"],"mappings":"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","ignoreList":[]}
|
package/dist/module/version.js
CHANGED
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.
|
|
2
|
-
C;AAExC,eAAeA,MAAM","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["module"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.android.ts"],"mappings":";;AAAA;AACA,MAAMA,MAA6B,GAAG,CAAC,CAAC;AAExC,eAAeA,MAAM","ignoreList":[]}
|
|
@@ -1,2 +1 @@
|
|
|
1
|
-
{"version":3,"names":[],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.
|
|
2
|
-
C;AAExC,eAAeA,MAAM","ignoreList":[]}
|
|
1
|
+
{"version":3,"names":["module"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ios.ts"],"mappings":";;AAAA;AACA,MAAMA,MAA6B,GAAG,CAAC,CAAC;AAExC,eAAeA,MAAM","ignoreList":[]}
|
|
@@ -10,14 +10,13 @@ function getAppCheckInstanceForApp(appName) {
|
|
|
10
10
|
}
|
|
11
11
|
return appCheckInstances[appName];
|
|
12
12
|
}
|
|
13
|
-
|
|
14
13
|
/**
|
|
15
14
|
* This is a 'NativeModule' for the web platform.
|
|
16
15
|
* Methods here are identical to the ones found in
|
|
17
16
|
* the native android/ios modules e.g. `@ReactMethod` annotated
|
|
18
17
|
* java methods on Android.
|
|
19
18
|
*/
|
|
20
|
-
|
|
19
|
+
const module = {
|
|
21
20
|
initializeAppCheck(appName, options) {
|
|
22
21
|
makeIDBAvailable();
|
|
23
22
|
return guard(async () => {
|
|
@@ -30,21 +29,22 @@ export default {
|
|
|
30
29
|
} = options;
|
|
31
30
|
const _provider = new CustomProvider({
|
|
32
31
|
getToken() {
|
|
33
|
-
|
|
32
|
+
if ('getToken' in provider && typeof provider.getToken === 'function') {
|
|
33
|
+
return provider.getToken();
|
|
34
|
+
}
|
|
35
|
+
throw new Error('Provider does not have a getToken method');
|
|
34
36
|
}
|
|
35
37
|
});
|
|
36
38
|
appCheckInstances[appName] = initializeAppCheck(getApp(appName), {
|
|
37
39
|
provider: _provider,
|
|
38
40
|
isTokenAutoRefreshEnabled
|
|
39
41
|
});
|
|
40
|
-
return null;
|
|
41
42
|
});
|
|
42
43
|
},
|
|
43
44
|
setTokenAutoRefreshEnabled(appName, isTokenAutoRefreshEnabled) {
|
|
44
45
|
return guard(async () => {
|
|
45
46
|
const instance = getAppCheckInstanceForApp(appName);
|
|
46
47
|
setTokenAutoRefreshEnabled(instance, isTokenAutoRefreshEnabled);
|
|
47
|
-
return null;
|
|
48
48
|
});
|
|
49
49
|
},
|
|
50
50
|
getLimitedUseToken(appName) {
|
|
@@ -71,7 +71,6 @@ export default {
|
|
|
71
71
|
...tokenResult
|
|
72
72
|
});
|
|
73
73
|
});
|
|
74
|
-
return null;
|
|
75
74
|
});
|
|
76
75
|
},
|
|
77
76
|
removeAppCheckListener(appName) {
|
|
@@ -81,8 +80,8 @@ export default {
|
|
|
81
80
|
}
|
|
82
81
|
listenersForApp[appName]();
|
|
83
82
|
delete listenersForApp[appName];
|
|
84
|
-
return null;
|
|
85
83
|
});
|
|
86
84
|
}
|
|
87
85
|
};
|
|
86
|
+
export default module;
|
|
88
87
|
//# sourceMappingURL=RNFBAppCheckModule.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["getApp","initializeAppCheck","getToken","getLimitedUseToken","setTokenAutoRefreshEnabled","CustomProvider","onTokenChanged","makeIDBAvailable","guard","emitEvent","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","options","provider","isTokenAutoRefreshEnabled","_provider","instance","forceRefresh","addAppCheckListener","tokenResult","removeAppCheckListener"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.
|
|
1
|
+
{"version":3,"names":["getApp","initializeAppCheck","getToken","getLimitedUseToken","setTokenAutoRefreshEnabled","CustomProvider","onTokenChanged","makeIDBAvailable","guard","emitEvent","appCheckInstances","listenersForApp","getAppCheckInstanceForApp","appName","Error","module","options","provider","isTokenAutoRefreshEnabled","_provider","instance","forceRefresh","addAppCheckListener","tokenResult","removeAppCheckListener"],"sourceRoot":"../../../lib","sources":["web/RNFBAppCheckModule.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -5,7 +5,7 @@ export declare class CustomProvider implements AppCheckProvider {
|
|
|
5
5
|
constructor(_customProviderOptions: CustomProviderOptions);
|
|
6
6
|
getToken(): Promise<import(".").AppCheckToken>;
|
|
7
7
|
}
|
|
8
|
-
export declare const SDK_VERSION = "23.8.
|
|
8
|
+
export declare const SDK_VERSION = "23.8.2";
|
|
9
9
|
type AppCheckNamespace = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics> & {
|
|
10
10
|
appCheck: ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics>;
|
|
11
11
|
firebase: ReactNativeFirebase.Module;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "23.8.
|
|
1
|
+
export declare const version = "23.8.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -5,7 +5,7 @@ export declare class CustomProvider implements AppCheckProvider {
|
|
|
5
5
|
constructor(_customProviderOptions: CustomProviderOptions);
|
|
6
6
|
getToken(): Promise<import(".").AppCheckToken>;
|
|
7
7
|
}
|
|
8
|
-
export declare const SDK_VERSION = "23.8.
|
|
8
|
+
export declare const SDK_VERSION = "23.8.2";
|
|
9
9
|
type AppCheckNamespace = ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics> & {
|
|
10
10
|
appCheck: ReactNativeFirebase.FirebaseModuleWithStaticsAndApp<AppCheck, AppCheckStatics>;
|
|
11
11
|
firebase: ReactNativeFirebase.Module;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const version = "23.8.
|
|
1
|
+
export declare const version = "23.8.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -0,0 +1,30 @@
|
|
|
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
|
+
|
|
20
|
+
#import <React/RCTBridgeModule.h>
|
|
21
|
+
|
|
22
|
+
#import "RNFBAppCheckProviderFactory.h"
|
|
23
|
+
|
|
24
|
+
@interface RNFBAppCheckModule : NSObject <RCTBridgeModule>
|
|
25
|
+
|
|
26
|
+
@property RNFBAppCheckProviderFactory* _Nullable providerFactory;
|
|
27
|
+
|
|
28
|
+
+ (_Nonnull instancetype)sharedInstance;
|
|
29
|
+
|
|
30
|
+
@end
|
|
@@ -0,0 +1,171 @@
|
|
|
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 <Firebase/Firebase.h>
|
|
19
|
+
#import <FirebaseAppCheck/FIRAppCheck.h>
|
|
20
|
+
|
|
21
|
+
#import <React/RCTUtils.h>
|
|
22
|
+
|
|
23
|
+
#import "RNFBApp/RNFBSharedUtils.h"
|
|
24
|
+
#import "RNFBAppCheckModule.h"
|
|
25
|
+
|
|
26
|
+
@implementation RNFBAppCheckModule
|
|
27
|
+
#pragma mark -
|
|
28
|
+
#pragma mark Module Setup
|
|
29
|
+
|
|
30
|
+
RCT_EXPORT_MODULE();
|
|
31
|
+
|
|
32
|
+
- (dispatch_queue_t)methodQueue {
|
|
33
|
+
return dispatch_get_main_queue();
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
+ (instancetype)sharedInstance {
|
|
37
|
+
static dispatch_once_t once;
|
|
38
|
+
__strong static RNFBAppCheckModule *sharedInstance;
|
|
39
|
+
dispatch_once(&once, ^{
|
|
40
|
+
sharedInstance = [[RNFBAppCheckModule alloc] init];
|
|
41
|
+
sharedInstance.providerFactory = [[RNFBAppCheckProviderFactory alloc] init];
|
|
42
|
+
[FIRAppCheck setAppCheckProviderFactory:sharedInstance.providerFactory];
|
|
43
|
+
});
|
|
44
|
+
return sharedInstance;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
#pragma mark -
|
|
48
|
+
#pragma mark Firebase AppCheck Methods
|
|
49
|
+
|
|
50
|
+
RCT_EXPORT_METHOD(activate
|
|
51
|
+
: (FIRApp *)firebaseApp
|
|
52
|
+
: (nonnull NSString *)siteKeyOrProvider
|
|
53
|
+
: (BOOL)isTokenAutoRefreshEnabled
|
|
54
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
55
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
56
|
+
DLog(@"deprecated API, provider will be deviceCheck / token refresh %d for app %@",
|
|
57
|
+
isTokenAutoRefreshEnabled, firebaseApp.name);
|
|
58
|
+
[[RNFBAppCheckModule sharedInstance].providerFactory configure:firebaseApp
|
|
59
|
+
providerName:@"deviceCheck"
|
|
60
|
+
debugToken:nil];
|
|
61
|
+
|
|
62
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
63
|
+
appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
64
|
+
resolve([NSNull null]);
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
RCT_EXPORT_METHOD(configureProvider
|
|
68
|
+
: (FIRApp *)firebaseApp
|
|
69
|
+
: (nonnull NSString *)providerName
|
|
70
|
+
: (nullable NSString *)debugToken
|
|
71
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
72
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
73
|
+
DLog(@"appName/providerName/debugToken: %@/%@/%@", firebaseApp.name, providerName,
|
|
74
|
+
(debugToken == nil ? @"null" : @"(not shown)"));
|
|
75
|
+
[[RNFBAppCheckModule sharedInstance].providerFactory configure:firebaseApp
|
|
76
|
+
providerName:providerName
|
|
77
|
+
debugToken:debugToken];
|
|
78
|
+
resolve([NSNull null]);
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
RCT_EXPORT_METHOD(setTokenAutoRefreshEnabled
|
|
82
|
+
: (FIRApp *)firebaseApp
|
|
83
|
+
: (BOOL)isTokenAutoRefreshEnabled) {
|
|
84
|
+
DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
|
|
85
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
86
|
+
appCheck.isTokenAutoRefreshEnabled = isTokenAutoRefreshEnabled;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
// Not present in JS or Android - it is iOS-specific so we only call this in testing - it is not in
|
|
90
|
+
// index.d.ts
|
|
91
|
+
RCT_EXPORT_METHOD(isTokenAutoRefreshEnabled
|
|
92
|
+
: (FIRApp *)firebaseApp
|
|
93
|
+
: (RCTPromiseResolveBlock)resolve rejecter
|
|
94
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
95
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
96
|
+
BOOL isTokenAutoRefreshEnabled = appCheck.isTokenAutoRefreshEnabled;
|
|
97
|
+
DLog(@"app/isTokenAutoRefreshEnabled: %@/%d", firebaseApp.name, isTokenAutoRefreshEnabled);
|
|
98
|
+
resolve([NSNumber numberWithBool:isTokenAutoRefreshEnabled]);
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
RCT_EXPORT_METHOD(getToken
|
|
102
|
+
: (FIRApp *)firebaseApp
|
|
103
|
+
: (BOOL)forceRefresh
|
|
104
|
+
: (RCTPromiseResolveBlock)resolve
|
|
105
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
106
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
107
|
+
DLog(@"appName %@", firebaseApp.name);
|
|
108
|
+
[appCheck
|
|
109
|
+
tokenForcingRefresh:forceRefresh
|
|
110
|
+
completion:^(FIRAppCheckToken *_Nullable token, NSError *_Nullable error) {
|
|
111
|
+
if (error != nil) {
|
|
112
|
+
// Handle any errors if the token was not retrieved.
|
|
113
|
+
DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token: %@", error);
|
|
114
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
115
|
+
userInfo:(NSMutableDictionary *)@{
|
|
116
|
+
@"code" : @"token-error",
|
|
117
|
+
@"message" : [error localizedDescription],
|
|
118
|
+
}];
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
if (token == nil) {
|
|
122
|
+
DLog(@"RNFBAppCheck - getToken - Unable to retrieve App Check token.");
|
|
123
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
124
|
+
userInfo:(NSMutableDictionary *)@{
|
|
125
|
+
@"code" : @"token-null",
|
|
126
|
+
@"message" : @"no token fetched",
|
|
127
|
+
}];
|
|
128
|
+
return;
|
|
129
|
+
}
|
|
130
|
+
|
|
131
|
+
NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
|
|
132
|
+
tokenResultDictionary[@"token"] = token.token;
|
|
133
|
+
resolve(tokenResultDictionary);
|
|
134
|
+
}];
|
|
135
|
+
}
|
|
136
|
+
|
|
137
|
+
RCT_EXPORT_METHOD(getLimitedUseToken
|
|
138
|
+
: (FIRApp *)firebaseApp
|
|
139
|
+
: (RCTPromiseResolveBlock)resolve
|
|
140
|
+
: (RCTPromiseRejectBlock)reject) {
|
|
141
|
+
FIRAppCheck *appCheck = [FIRAppCheck appCheckWithApp:firebaseApp];
|
|
142
|
+
DLog(@"appName %@", firebaseApp.name);
|
|
143
|
+
[appCheck limitedUseTokenWithCompletion:^(FIRAppCheckToken *_Nullable token,
|
|
144
|
+
NSError *_Nullable error) {
|
|
145
|
+
if (error != nil) {
|
|
146
|
+
// Handle any errors if the token was not retrieved.
|
|
147
|
+
DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token: %@", error);
|
|
148
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
149
|
+
userInfo:(NSMutableDictionary *)@{
|
|
150
|
+
@"code" : @"token-error",
|
|
151
|
+
@"message" : [error localizedDescription],
|
|
152
|
+
}];
|
|
153
|
+
return;
|
|
154
|
+
}
|
|
155
|
+
if (token == nil) {
|
|
156
|
+
DLog(@"RNFBAppCheck - getLimitedUseToken - Unable to retrieve App Check token.");
|
|
157
|
+
[RNFBSharedUtils rejectPromiseWithUserInfo:reject
|
|
158
|
+
userInfo:(NSMutableDictionary *)@{
|
|
159
|
+
@"code" : @"token-null",
|
|
160
|
+
@"message" : @"no token fetched",
|
|
161
|
+
}];
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
NSMutableDictionary *tokenResultDictionary = [NSMutableDictionary new];
|
|
166
|
+
tokenResultDictionary[@"token"] = token.token;
|
|
167
|
+
resolve(tokenResultDictionary);
|
|
168
|
+
}];
|
|
169
|
+
}
|
|
170
|
+
|
|
171
|
+
@end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2023-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 <Firebase/Firebase.h>
|
|
19
|
+
#import <FirebaseAppCheck/FIRAppCheck.h>
|
|
20
|
+
|
|
21
|
+
@interface RNFBAppCheckProvider : NSObject <FIRAppCheckProvider>
|
|
22
|
+
|
|
23
|
+
@property FIRApp *app;
|
|
24
|
+
|
|
25
|
+
@property id<FIRAppCheckProvider> delegateProvider;
|
|
26
|
+
|
|
27
|
+
- (void)configure:(FIRApp *)app
|
|
28
|
+
providerName:(NSString *)providerName
|
|
29
|
+
debugToken:(NSString *)debugToken;
|
|
30
|
+
|
|
31
|
+
- (id)initWithApp:(FIRApp *)app;
|
|
32
|
+
|
|
33
|
+
@end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2023-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
|
+
#import "RNFBAppCheckProvider.h"
|
|
18
|
+
#import "RNFBApp/RNFBSharedUtils.h"
|
|
19
|
+
|
|
20
|
+
@implementation RNFBAppCheckProvider
|
|
21
|
+
|
|
22
|
+
- (id)initWithApp:app {
|
|
23
|
+
DLog(@"RNFBAppCheck init with app %@", [app name]);
|
|
24
|
+
self = [super init];
|
|
25
|
+
if (self) {
|
|
26
|
+
self.app = app;
|
|
27
|
+
}
|
|
28
|
+
return self;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
- (void)configure:(FIRApp *)app
|
|
32
|
+
providerName:(NSString *)providerName
|
|
33
|
+
debugToken:(NSString *)debugToken {
|
|
34
|
+
DLog(@"appName/providerName/debugToken: %@/%@/%@", app.name, providerName,
|
|
35
|
+
(debugToken == nil ? @"null" : @"(not shown)"));
|
|
36
|
+
|
|
37
|
+
DLog(@"appName %@", app.name);
|
|
38
|
+
|
|
39
|
+
// - determine if debugToken is provided via nullable arg
|
|
40
|
+
if ([providerName isEqualToString:@"debug"]) {
|
|
41
|
+
// The firebase-ios-sdk debug app check provider will take a token from environment if it
|
|
42
|
+
// exists:
|
|
43
|
+
if (debugToken != nil) {
|
|
44
|
+
// We have a debug token, so just need to stuff it in the environment and it will hook up
|
|
45
|
+
char *key = "FIRAAppCheckDebugToken", *value = (char *)[debugToken UTF8String];
|
|
46
|
+
int overwrite = 1;
|
|
47
|
+
setenv(key, value, overwrite);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
self.delegateProvider = [[FIRAppCheckDebugProvider alloc] initWithApp:app];
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
if ([providerName isEqualToString:@"deviceCheck"]) {
|
|
54
|
+
self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app];
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
if ([providerName isEqualToString:@"appAttest"]) {
|
|
58
|
+
if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) {
|
|
59
|
+
self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app];
|
|
60
|
+
} else {
|
|
61
|
+
// This is not a valid configuration.
|
|
62
|
+
DLog(@"AppAttest unavailable: it requires iOS14+, macOS 11+, macCatalyst14+ or tvOS15+. "
|
|
63
|
+
@"Installing "
|
|
64
|
+
@"debug provider to guarantee invalid tokens in this invalid configuration.");
|
|
65
|
+
self.delegateProvider = [[FIRAppCheckDebugProvider alloc] initWithApp:app];
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
if ([providerName isEqualToString:@"appAttestWithDeviceCheckFallback"]) {
|
|
70
|
+
if (@available(iOS 14.0, macOS 11.0, macCatalyst 14.0, tvOS 15.0, watchOS 9.0, *)) {
|
|
71
|
+
self.delegateProvider = [[FIRAppAttestProvider alloc] initWithApp:app];
|
|
72
|
+
} else {
|
|
73
|
+
self.delegateProvider = [[FIRDeviceCheckProvider alloc] initWithApp:app];
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
- (void)getTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
|
|
79
|
+
NSError *_Nullable))handler {
|
|
80
|
+
DLog(@"proxying getTokenWithCompletion to delegateProvider...");
|
|
81
|
+
[self.delegateProvider getTokenWithCompletion:handler];
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
- (void)getLimitedUseTokenWithCompletion:(nonnull void (^)(FIRAppCheckToken *_Nullable,
|
|
85
|
+
NSError *_Nullable))handler {
|
|
86
|
+
DLog(@"proxying getLimitedUseTokenWithCompletion to delegateProvider...");
|
|
87
|
+
[self.delegateProvider getLimitedUseTokenWithCompletion:handler];
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
@end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) 2023-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 "RNFBAppCheckProvider.h"
|
|
19
|
+
|
|
20
|
+
@interface RNFBAppCheckProviderFactory : NSObject <FIRAppCheckProviderFactory>
|
|
21
|
+
|
|
22
|
+
@property NSMutableDictionary *_Nullable providers;
|
|
23
|
+
|
|
24
|
+
- (void)configure:(FIRApp *_Nonnull)app
|
|
25
|
+
providerName:(NSString *_Nonnull)providerName
|
|
26
|
+
debugToken:(NSString *_Nullable)debugToken;
|
|
27
|
+
|
|
28
|
+
@end
|