mirror of
https://gitlab.opencode.de/bwi/bundesmessenger/clients/bundesmessenger-ios.git
synced 2026-04-23 18:12:44 +02:00
ReauthenticationCoordinator: Add the possibility to start directly from a MXAuthenticationSession.
This commit is contained in:
@@ -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()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user