Skip to content

Commit 69cb8c5

Browse files
authored
Add support for passkeys on login (#3996)
* WIP Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com> * WIP Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com> * Use ASWebAuthenticationSession Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com> * WIP Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com> * WIP Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com> --------- Signed-off-by: Milen Pivchev <milen.pivchev@gmail.com>
1 parent 3b2da11 commit 69cb8c5

4 files changed

Lines changed: 237 additions & 125 deletions

File tree

Brand/Intro/NCIntroViewController.swift

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class NCIntroViewController: UIViewController, UICollectionViewDataSource, UICol
2222
private var timer: Timer?
2323
private var textColor: UIColor = .white
2424
private var textColorOpponent: UIColor = .black
25+
private var activeLoginProvider: NCLoginProvider?
2526

2627
// MARK: - View Life Cycle
2728

@@ -164,11 +165,12 @@ class NCIntroViewController: UIViewController, UICollectionViewDataSource, UICol
164165
}
165166

166167
@IBAction func signupWithProvider(_ sender: Any) {
167-
if let viewController = UIStoryboard(name: "NCLogin", bundle: nil).instantiateViewController(withIdentifier: "NCLoginProvider") as? NCLoginProvider {
168-
viewController.controller = self.controller
169-
viewController.initialURLString = NCBrandOptions.shared.linkloginPreferredProviders
170-
self.navigationController?.pushViewController(viewController, animated: true)
171-
}
168+
let loginProvider = NCLoginProvider()
169+
loginProvider.controller = self.controller
170+
loginProvider.initialURLString = NCBrandOptions.shared.linkloginPreferredProviders
171+
loginProvider.presentingViewController = self
172+
loginProvider.startAuthentication()
173+
self.activeLoginProvider = loginProvider
172174
}
173175

174176
@IBAction func host(_ sender: Any) {

iOSClient/Login/NCLogin.swift

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ class NCLogin: UIViewController, UITextFieldDelegate, NCLoginQRCodeDelegate {
4444
private var p12Data: Data?
4545
private var p12Password: String?
4646
private var QRCodeCheck: Bool = false
47+
private var activeLoginProvider: NCLoginProvider?
4748

4849
// MARK: - View Life Cycle
4950

@@ -338,12 +339,14 @@ class NCLogin: UIViewController, UITextFieldDelegate, NCLoginQRCodeDelegate {
338339
// Login Flow V2
339340
if error == .success, let token, let endpoint, let login {
340341
nkLog(debug: "Successfully received login flow information.")
341-
let safariVC = NCLoginProvider()
342-
safariVC.initialURLString = login
343-
safariVC.uiColor = textColor
344-
safariVC.delegate = self
345-
safariVC.startPolling(loginFlowV2Token: token, loginFlowV2Endpoint: endpoint, loginFlowV2Login: login)
346-
navigationController?.pushViewController(safariVC, animated: true)
342+
let loginProvider = NCLoginProvider()
343+
loginProvider.initialURLString = login
344+
loginProvider.delegate = self
345+
loginProvider.controller = self.controller
346+
loginProvider.presentingViewController = self
347+
loginProvider.startPolling(loginFlowV2Token: token, loginFlowV2Endpoint: endpoint, loginFlowV2Login: login)
348+
loginProvider.startAuthentication()
349+
self.activeLoginProvider = loginProvider
347350
}
348351
}
349352
case .failure(let error):
@@ -506,5 +509,7 @@ extension NCLogin: NCLoginProviderDelegate {
506509
func onBack() {
507510
loginButton.isEnabled = true
508511
loginButton.hideSpinnerAndShowButton()
512+
activeLoginProvider?.cancel()
513+
activeLoginProvider = nil
509514
}
510515
}

0 commit comments

Comments
 (0)