Skip to content

Commit 80e7e36

Browse files
Adding LinkDomain to ActionCodeSetting (#13490)
1 parent 962e3dd commit 80e7e36

File tree

4 files changed

+18
-0
lines changed

4 files changed

+18
-0
lines changed

FirebaseAuth/Sources/Swift/ActionCode/ActionCodeSettings.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,9 @@ import Foundation
4242
/// The Firebase Dynamic Link domain used for out of band code flow.
4343
@objc open var dynamicLinkDomain: String?
4444

45+
/// The out of band custom domain for handling code in app.
46+
@objc open var linkDomain: String?
47+
4548
/// Sets the iOS bundle ID.
4649
@objc override public init() {
4750
iOSBundleID = Bundle.main.bundleIdentifier

FirebaseAuth/Sources/Swift/Backend/RPC/GetOOBConfirmationCodeRequest.swift

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,9 @@ private let kCanHandleCodeInAppKey = "canHandleCodeInApp"
7878
/// The key for the "dynamic link domain" value in the request.
7979
private let kDynamicLinkDomainKey = "dynamicLinkDomain"
8080

81+
/// The key for the "link domain" value in the request.
82+
private let kLinkDomainKey = "linkDomain"
83+
8184
/// The value for the "PASSWORD_RESET" request type.
8285
private let kPasswordResetRequestTypeValue = "PASSWORD_RESET"
8386

@@ -140,6 +143,9 @@ class GetOOBConfirmationCodeRequest: IdentityToolkitRequest, AuthRPCRequest {
140143
/// The Firebase Dynamic Link domain used for out of band code flow.
141144
private(set) var dynamicLinkDomain: String?
142145

146+
/// The Firebase Hosting domain used for out of band code flow.
147+
private(set) var linkDomain: String?
148+
143149
/// Response to the captcha.
144150
var captchaResponse: String?
145151

@@ -172,6 +178,7 @@ class GetOOBConfirmationCodeRequest: IdentityToolkitRequest, AuthRPCRequest {
172178
androidInstallApp = actionCodeSettings?.androidInstallIfNotAvailable ?? false
173179
handleCodeInApp = actionCodeSettings?.handleCodeInApp ?? false
174180
dynamicLinkDomain = actionCodeSettings?.dynamicLinkDomain
181+
linkDomain = actionCodeSettings?.linkDomain
175182

176183
super.init(
177184
endpoint: kGetOobConfirmationCodeEndpoint,
@@ -274,6 +281,9 @@ class GetOOBConfirmationCodeRequest: IdentityToolkitRequest, AuthRPCRequest {
274281
if let dynamicLinkDomain {
275282
body[kDynamicLinkDomainKey] = dynamicLinkDomain
276283
}
284+
if let linkDomain {
285+
body[kLinkDomainKey] = linkDomain
286+
}
277287
if let captchaResponse {
278288
body[kCaptchaResponseKey] = captchaResponse
279289
}

FirebaseAuth/Tests/Unit/GetOOBConfirmationCodeTests.swift

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class GetOOBConfirmationCodeTests: RPCBaseTests {
3434
private let kAndroidMinimumVersionKey = "androidMinimumVersion"
3535
private let kCanHandleCodeInAppKey = "canHandleCodeInApp"
3636
private let kDynamicLinkDomainKey = "dynamicLinkDomain"
37+
private let kLinkDomainKey = "linkDomain"
3738
private let kExpectedAPIURL =
3839
"https://www.googleapis.com/identitytoolkit/v3/relyingparty/getOobConfirmationCode?key=APIKey"
3940
private let kOOBCodeKey = "oobCode"
@@ -66,6 +67,7 @@ class GetOOBConfirmationCodeTests: RPCBaseTests {
6667
XCTAssertEqual(decodedRequest[kAndroidInstallAppKey] as? Bool, true)
6768
XCTAssertEqual(decodedRequest[kCanHandleCodeInAppKey] as? Bool, true)
6869
XCTAssertEqual(decodedRequest[kDynamicLinkDomainKey] as? String, kDynamicLinkDomain)
70+
XCTAssertEqual(decodedRequest[kLinkDomainKey] as? String, kLinkDomain)
6971
}
7072
}
7173

@@ -110,6 +112,7 @@ class GetOOBConfirmationCodeTests: RPCBaseTests {
110112
XCTAssertEqual(decodedRequest[kAndroidInstallAppKey] as? Bool, true)
111113
XCTAssertEqual(decodedRequest[kCanHandleCodeInAppKey] as? Bool, true)
112114
XCTAssertEqual(decodedRequest[kDynamicLinkDomainKey] as? String, kDynamicLinkDomain)
115+
XCTAssertEqual(decodedRequest[kLinkDomainKey] as? String, kLinkDomain)
113116
XCTAssertEqual(decodedRequest[kCaptchaResponseKey] as? String, kTestCaptchaResponse)
114117
XCTAssertEqual(decodedRequest[kClientTypeKey] as? String, kTestClientType)
115118
XCTAssertEqual(decodedRequest[kRecaptchaVersionKey] as? String, kTestRecaptchaVersion)

FirebaseAuth/Tests/Unit/RPCBaseTests.swift

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ class RPCBaseTests: XCTestCase {
3838
let kAndroidPackageName = "androidpackagename"
3939
let kAndroidMinimumVersion = "3.0"
4040
let kDynamicLinkDomain = "test.page.link"
41+
let kLinkDomain = "link.firebaseapp.com"
4142
let kTestPhotoURL = "https://host.domain/image"
4243
let kCreationDateTimeIntervalInSeconds = 1_505_858_500.0
4344
let kLastSignInDateTimeIntervalInSeconds = 1_505_858_583.0
@@ -304,6 +305,7 @@ class RPCBaseTests: XCTestCase {
304305
settings.handleCodeInApp = true
305306
settings.url = URL(string: kContinueURL)
306307
settings.dynamicLinkDomain = kDynamicLinkDomain
308+
settings.linkDomain = kLinkDomain
307309
return settings
308310
}
309311

0 commit comments

Comments
 (0)