From 2242869f65174480b19d56d09dd881fce4f9486e Mon Sep 17 00:00:00 2001 From: daniel528 Date: Fri, 8 Aug 2025 15:41:13 +1000 Subject: [PATCH 1/3] refactor: filter out any multifactor besides phone --- packages/auth/ios/RNFBAuth/RNFBAuthModule.m | 38 +++++++++------------ 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m index 0e1ac88b86..c494b068be 100644 --- a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m +++ b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m @@ -1462,14 +1462,6 @@ - (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver { } #endif -- (NSString *)getJSFactorId:(NSString *)factorId { - if ([factorId isEqualToString:@"1"]) { - // Only phone is supported by the front-end so far - return @"phone"; - } - - return factorId; -} - (void)promiseRejectAuthException:(RCTPromiseRejectBlock)reject error:(NSError *)error { NSDictionary *jsError = [self getJSError:error]; @@ -1737,19 +1729,23 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { - (NSArray *)convertMultiFactorData:(NSArray *)hints { NSMutableArray *enrolledFactors = [NSMutableArray array]; - for (FIRPhoneMultiFactorInfo *hint in hints) { - NSString *enrollmentTime = - [[[NSISO8601DateFormatter alloc] init] stringFromDate:hint.enrollmentDate]; - [enrolledFactors addObject:@{ - @"uid" : hint.UID, - @"factorId" : [self getJSFactorId:(hint.factorID)], - @"displayName" : hint.displayName == nil ? [NSNull null] : hint.displayName, - @"enrollmentTime" : enrollmentTime, - // @deprecated enrollmentDate kept for backwards compatibility, please use enrollmentTime - @"enrollmentDate" : enrollmentTime, - // phoneNumber only present on FIRPhoneMultiFactorInfo - @"phoneNumber" : hint.phoneNumber == nil ? [NSNull null] : hint.phoneNumber, - }]; + for (FIRMultiFactorInfo *hint in hints) { + // only support phone mutli factor + if ([hint isKindOfClass:[FIRPhoneMultiFactorInfo class]]) { + FIRPhoneMultiFactorInfo *phoneHint = (FIRPhoneMultiFactorInfo *)hint; + + NSString *enrollmentTime = + [[[NSISO8601DateFormatter alloc] init] stringFromDate:phoneHint.enrollmentDate]; + [enrolledFactors addObject:@{ + @"uid" : phoneHint.UID, + @"factorId" : FIRPhoneMultiFactorInfo.FIRPhoneMultiFactorID, + @"displayName" : phoneHint.displayName == nil ? [NSNull null] : phoneHint.displayName, + @"enrollmentTime" : enrollmentTime, + // @deprecated enrollmentDate kept for backwards compatibility, please use enrollmentTime + @"enrollmentDate" : enrollmentTime, + @"phoneNumber" : phoneHint.phoneNumber, + }]; + } } return enrolledFactors; } From 080d44b3e9a2c2d6bc5ccc8dd0b6554d4f72584c Mon Sep 17 00:00:00 2001 From: daniel528 Date: Fri, 8 Aug 2025 15:41:13 +1000 Subject: [PATCH 2/3] refactor: move common props to outside phone check for future totp implementation --- packages/auth/ios/RNFBAuth/RNFBAuthModule.m | 26 +++++++++++---------- 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m index c494b068be..b98cfd0ac5 100644 --- a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m +++ b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m @@ -1730,22 +1730,24 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { NSMutableArray *enrolledFactors = [NSMutableArray array]; for (FIRMultiFactorInfo *hint in hints) { - // only support phone mutli factor - if ([hint isKindOfClass:[FIRPhoneMultiFactorInfo class]]) { - FIRPhoneMultiFactorInfo *phoneHint = (FIRPhoneMultiFactorInfo *)hint; - NSString *enrollmentTime = - [[[NSISO8601DateFormatter alloc] init] stringFromDate:phoneHint.enrollmentDate]; - [enrolledFactors addObject:@{ - @"uid" : phoneHint.UID, - @"factorId" : FIRPhoneMultiFactorInfo.FIRPhoneMultiFactorID, - @"displayName" : phoneHint.displayName == nil ? [NSNull null] : phoneHint.displayName, + [[[NSISO8601DateFormatter alloc] init] stringFromDate:hint.enrollmentDate]; + + NSMutableDictionary *factorDict = [@{ + @"uid" : hint.UID, + @"factorId": hint.factorID, + @"displayName" : hint.displayName == nil ? [NSNull null] : hint.displayName, @"enrollmentTime" : enrollmentTime, // @deprecated enrollmentDate kept for backwards compatibility, please use enrollmentTime @"enrollmentDate" : enrollmentTime, - @"phoneNumber" : phoneHint.phoneNumber, - }]; - } + } mutableCopy]; + + // only support phone mutli factor + if ([hint isKindOfClass:[FIRPhoneMultiFactorInfo class]]) { + FIRPhoneMultiFactorInfo *phoneHint = (FIRPhoneMultiFactorInfo *)hint; + factorDict[@"phoneNumber"] = phoneHint.phoneNumber; + [enrolledFactors addObject:factorDict]; + } } return enrolledFactors; } From 53596c684b45102d22ff91d092895f0e2dc6839f Mon Sep 17 00:00:00 2001 From: daniel528 Date: Mon, 11 Aug 2025 10:22:04 +1000 Subject: [PATCH 3/3] style: run lint:ios:fix --- packages/auth/ios/RNFBAuth/RNFBAuthModule.m | 35 ++++++++++----------- 1 file changed, 17 insertions(+), 18 deletions(-) diff --git a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m index b98cfd0ac5..c2531c7d22 100644 --- a/packages/auth/ios/RNFBAuth/RNFBAuthModule.m +++ b/packages/auth/ios/RNFBAuth/RNFBAuthModule.m @@ -1462,7 +1462,6 @@ - (NSDictionary *)multiFactorResolverToDict:(FIRMultiFactorResolver *)resolver { } #endif - - (void)promiseRejectAuthException:(RCTPromiseRejectBlock)reject error:(NSError *)error { NSDictionary *jsError = [self getJSError:error]; @@ -1730,24 +1729,24 @@ - (NSDictionary *)firebaseUserToDict:(FIRUser *)user { NSMutableArray *enrolledFactors = [NSMutableArray array]; for (FIRMultiFactorInfo *hint in hints) { - NSString *enrollmentTime = + NSString *enrollmentTime = [[[NSISO8601DateFormatter alloc] init] stringFromDate:hint.enrollmentDate]; - - NSMutableDictionary *factorDict = [@{ - @"uid" : hint.UID, - @"factorId": hint.factorID, - @"displayName" : hint.displayName == nil ? [NSNull null] : hint.displayName, - @"enrollmentTime" : enrollmentTime, - // @deprecated enrollmentDate kept for backwards compatibility, please use enrollmentTime - @"enrollmentDate" : enrollmentTime, - } mutableCopy]; - - // only support phone mutli factor - if ([hint isKindOfClass:[FIRPhoneMultiFactorInfo class]]) { - FIRPhoneMultiFactorInfo *phoneHint = (FIRPhoneMultiFactorInfo *)hint; - factorDict[@"phoneNumber"] = phoneHint.phoneNumber; - [enrolledFactors addObject:factorDict]; - } + + NSMutableDictionary *factorDict = [@{ + @"uid" : hint.UID, + @"factorId" : hint.factorID, + @"displayName" : hint.displayName == nil ? [NSNull null] : hint.displayName, + @"enrollmentTime" : enrollmentTime, + // @deprecated enrollmentDate kept for backwards compatibility, please use enrollmentTime + @"enrollmentDate" : enrollmentTime, + } mutableCopy]; + + // only support phone mutli factor + if ([hint isKindOfClass:[FIRPhoneMultiFactorInfo class]]) { + FIRPhoneMultiFactorInfo *phoneHint = (FIRPhoneMultiFactorInfo *)hint; + factorDict[@"phoneNumber"] = phoneHint.phoneNumber; + [enrolledFactors addObject:factorDict]; + } } return enrolledFactors; }