ReauthenticationCoordinator: Add the possibility to start directly from a MXAuthenticationSession.

This commit is contained in:
SBiOSoftWhare
2021-02-11 14:56:12 +01:00
parent 5041b5d203
commit 00dd2c3c96
2 changed files with 57 additions and 13 deletions
@@ -63,8 +63,17 @@ final class ReauthenticationCoordinator: ReauthenticationCoordinatorType {
// MARK: - Public methods
func start() {
self.userInteractiveAuthenticationService.authenticatedEndpointStatus(for: self.parameters.authenticatedEndpointRequest) { (result) in
if let authenticatedEndpointRequest = self.parameters.authenticatedEndpointRequest {
self.start(with: authenticatedEndpointRequest)
} else if let authenticationSession = self.parameters.authenticationSession {
self.start(with: authenticationSession)
} else {
fatalError("[ReauthenticationCoordinator] Should not happen. Missing authentication parameters")
}
}
private func start(with authenticatedEndpointRequest: AuthenticatedEndpointRequest) {
self.userInteractiveAuthenticationService.authenticatedEndpointStatus(for: authenticatedEndpointRequest) { (result) in
switch result {
case .success(let authenticatedEnpointStatus):
@@ -74,14 +83,7 @@ final class ReauthenticationCoordinator: ReauthenticationCoordinatorType {
NSLog("[ReauthenticationCoordinator] No need to login again")
self.delegate?.reauthenticationCoordinatorDidComplete(self, withAuthenticationParameters: nil)
case .authenticationNeeded(let authenticationSession):
if self.userInteractiveAuthenticationService.hasPasswordFlow(inFlows: authenticationSession.flows) {
self.showPasswordAuthentication(with: authenticationSession)
} else if let authenticationFallbackURL = self.userInteractiveAuthenticationService.firstUncompletedStageAuthenticationFallbackURL(for: authenticationSession) {
self.showFallbackAuthentication(with: authenticationFallbackURL, authenticationSession: authenticationSession)
} else {
self.delegate?.reauthenticationCoordinator(self, didFailWithError: UserInteractiveAuthenticationServiceError.flowNotSupported)
}
self.start(with: authenticationSession)
}
case .failure(let error):
self.delegate?.reauthenticationCoordinator(self, didFailWithError: error)
@@ -89,6 +91,17 @@ final class ReauthenticationCoordinator: ReauthenticationCoordinatorType {
}
}
private func start(with authenticationSession: MXAuthenticationSession) {
if self.userInteractiveAuthenticationService.hasPasswordFlow(inFlows: authenticationSession.flows) {
self.showPasswordAuthentication(with: authenticationSession)
} else if let authenticationFallbackURL = self.userInteractiveAuthenticationService.firstUncompletedStageAuthenticationFallbackURL(for: authenticationSession) {
self.showFallbackAuthentication(with: authenticationFallbackURL, authenticationSession: authenticationSession)
} else {
self.delegate?.reauthenticationCoordinator(self, didFailWithError: UserInteractiveAuthenticationServiceError.flowNotSupported)
}
}
func toPresentable() -> UIViewController {
return self.parameters.presenter.toPresentable()
}