mirror of
https://github.com/pointfreeco/swift-composable-architecture.git
synced 2025-12-20 09:11:33 +01:00
25 lines
875 B
Swift
25 lines
875 B
Swift
import AuthenticationClient
|
|
import Combine
|
|
import ComposableArchitecture
|
|
import Foundation
|
|
|
|
extension AuthenticationClient {
|
|
public static let live = AuthenticationClient(
|
|
login: { request in
|
|
(request.email.contains("@") && request.password == "password"
|
|
? Effect(value: .init(token: "deadbeef", twoFactorRequired: request.email.contains("2fa")))
|
|
: Effect(error: .invalidUserPassword))
|
|
.delay(for: 1, scheduler: DispatchQueue.global())
|
|
.eraseToEffect()
|
|
},
|
|
twoFactor: { request in
|
|
(request.token != "deadbeef"
|
|
? Effect(error: .invalidIntermediateToken)
|
|
: request.code != "1234"
|
|
? Effect(error: .invalidTwoFactor)
|
|
: Effect(value: .init(token: "deadbeefdeadbeef", twoFactorRequired: false)))
|
|
.delay(for: 1, scheduler: DispatchQueue.global())
|
|
.eraseToEffect()
|
|
})
|
|
}
|