Skip to content

Commit 24d3a39

Browse files
Support deviceOwnerAuthentication
1 parent a4c1d5d commit 24d3a39

File tree

3 files changed

+14
-8
lines changed

3 files changed

+14
-8
lines changed

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)