Skip to content

Commit d02b055

Browse files
authored
Support deviceOwnerAuthentication #374
ref DEV-2996
2 parents a4c1d5d + 003b31b commit d02b055

File tree

4 files changed

+26
-20
lines changed

4 files changed

+26
-20
lines changed

example/capacitor/ios/App/Podfile.lock

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
11
PODS:
22
- AuthgearCapacitor (3.2.0):
33
- Capacitor
4-
- Capacitor (7.0.1):
4+
- Capacitor (7.4.3):
55
- CapacitorCordova
6-
- CapacitorApp (7.0.0):
6+
- CapacitorApp (7.0.2):
77
- Capacitor
8-
- CapacitorCordova (7.0.1)
9-
- CapacitorHaptics (7.0.0):
8+
- CapacitorCordova (7.4.3)
9+
- CapacitorHaptics (7.0.2):
1010
- Capacitor
11-
- CapacitorKeyboard (7.0.0):
11+
- CapacitorKeyboard (7.0.2):
1212
- Capacitor
13-
- CapacitorStatusBar (7.0.0):
13+
- CapacitorStatusBar (7.0.2):
1414
- Capacitor
1515

1616
DEPENDENCIES:
@@ -40,12 +40,12 @@ EXTERNAL SOURCES:
4040

4141
SPEC CHECKSUMS:
4242
AuthgearCapacitor: ea764402273c482792acdb3d73e1b192585e24d6
43-
Capacitor: de199cba6c8b20995428ad0b7cb0bc6ca625ffd4
44-
CapacitorApp: 9cb31064a6c6bb2b1438583733a7bf45557fc1da
45-
CapacitorCordova: 63d476958d5022d76f197031e8b7ea3519988c64
46-
CapacitorHaptics: 7be406a91e4eb87287f321c6c68e1709d6837b3a
47-
CapacitorKeyboard: 4db71e694e7afb5d7c0be09b05495c19f7d6c914
48-
CapacitorStatusBar: a8c4c83ed2e973bdafb979e80e4b00d027832cb7
43+
Capacitor: 28d6c01026a9a3f7156529498ec1f389a2a28dbc
44+
CapacitorApp: 1f6922c9c5c8b1c538d7fbe92ebe44a81b34bed3
45+
CapacitorCordova: 435121e81a2df4d0034f0fb11fcefab5104cfdb5
46+
CapacitorHaptics: b3fb2869e72c4466e18ce9ccbeb60a3d8723b3d4
47+
CapacitorKeyboard: a86aa9e4741b6444a802df26440a92ae041b34a6
48+
CapacitorStatusBar: e04d05e121d5a5979c29eb4249186a4e4a84cacb
4949

5050
PODFILE CHECKSUM: ade9ca3b7d62eb897d0fb2ceb6127a694b70c8f3
5151

packages/authgear-capacitor/ios/Plugin/AuthgearPlugin.swift

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -148,9 +148,11 @@ public class AuthgearPlugin: CAPPlugin {
148148
}
149149

150150
@objc func checkBiometricSupported(_ call: CAPPluginCall) {
151+
let ios = call.getObject("ios")!
152+
let policyString = ios["policy"] as! String
151153
DispatchQueue.main.async {
152154
do {
153-
try self.impl.checkBiometricSupported()
155+
try self.impl.checkBiometricSupported(policyString: policyString)
154156
call.resolve()
155157
} catch {
156158
error.reject(call)
@@ -163,13 +165,13 @@ public class AuthgearPlugin: CAPPlugin {
163165
let payload = call.getObject("payload")!
164166
let ios = call.getObject("ios")!
165167
let constraint = ios["constraint"] as! String
168+
let policyString = ios["policy"] as! String
166169
let localizedReason = ios["localizedReason"] as! String
167170
let tag = "com.authgear.keys.biometric.\(kid)"
168-
let policy = LAPolicy.deviceOwnerAuthenticationWithBiometrics
169171

170172
DispatchQueue.main.async {
171173
self.impl.createBiometricPrivateKey(
172-
policy: policy,
174+
policyString: policyString,
173175
localizedReason: localizedReason,
174176
constraint: constraint,
175177
kid: kid,

packages/authgear-capacitor/ios/Plugin/AuthgearPluginImpl.swift

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -282,9 +282,9 @@ import Capacitor
282282
}
283283
}
284284

285-
@objc func checkBiometricSupported() throws {
285+
@objc func checkBiometricSupported(policyString: String) throws {
286286
if #available(iOS 11.3, *) {
287-
let policy = LAPolicy.deviceOwnerAuthenticationWithBiometrics
287+
let policy = LAPolicy.from(string: policyString)!
288288
let laContext = self.makeLAContext(policy: policy)
289289
var error: NSError?
290290
laContext.canEvaluatePolicy(policy, error: &error)
@@ -297,14 +297,15 @@ import Capacitor
297297
}
298298

299299
@objc func createBiometricPrivateKey(
300-
policy: LAPolicy,
300+
policyString: String,
301301
localizedReason: String,
302302
constraint: String,
303303
kid: String,
304304
tag: String,
305305
payload: [String: Any],
306306
completion: @escaping (String?, Error?) -> Void
307307
) {
308+
let policy = LAPolicy.from(string: policyString)!
308309
let ctx = makeLAContext(policy: policy)
309310
ctx.evaluatePolicy(policy, localizedReason: localizedReason) { ok, error in
310311
if let error = error {

packages/authgear-react-native/ios/AGAuthgearReactNative.m

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -395,7 +395,9 @@ + (BOOL)application:(UIApplication *)application
395395
RCT_EXPORT_METHOD(checkBiometricSupported:(NSDictionary *)options resolver:(RCTPromiseResolveBlock)resolve rejecter:(RCTPromiseRejectBlock)reject)
396396
{
397397
if (@available(iOS 11.3, *)) {
398-
LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
398+
NSDictionary *iosDict = options[@"ios"];
399+
NSString *policyString = iosDict[@"policy"];
400+
LAPolicy policy = [self laPolicyFromString:policyString];
399401
LAContext *context = [self laContextFromPolicy:policy];
400402
NSError *error = NULL;
401403
[context canEvaluatePolicy:policy error:&error];
@@ -435,8 +437,9 @@ + (BOOL)application:(UIApplication *)application
435437
NSDictionary *iosDict = options[@"ios"];
436438
NSString *constraint = iosDict[@"constraint"];
437439
NSString *localizedReason = iosDict[@"localizedReason"];
440+
NSString *policyString = iosDict[@"policy"];
438441
NSString *tag = [NSString stringWithFormat:@"com.authgear.keys.biometric.%@", kid];
439-
LAPolicy policy = LAPolicyDeviceOwnerAuthenticationWithBiometrics;
442+
LAPolicy policy = [self laPolicyFromString:policyString];
440443
LAContext *context = [self laContextFromPolicy:policy];
441444

442445
[context evaluatePolicy:policy localizedReason:localizedReason reply:^(BOOL success, NSError * _Nullable laError) {

0 commit comments

Comments
 (0)