You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

68 lines
1.6 KiB

//
// LoginInteractor.swift
// GMERemittance
//
// Created by gme_2 on 07/09/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import Foundation
class LoginInteractor {
// MARK: Properties
weak var output: LoginInteractorOutput?
private let service: LoginServiceType
// MARK: Initialization
init(service: LoginServiceType) {
self.service = service
}
func toBase64(text: String) -> String? {
guard let data = text.data(using: String.Encoding.utf8) else {
return nil
}
return data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
}
// MARK: Converting entities
}
// MARK: Login interactor input interface
extension LoginInteractor: LoginInteractorInput {
func login(userName: String, customerType: String, encryptedPassword: String) {
// send encrypted password to server for kftc
GMEDB.shared.getFcmToken { (token, error) in
self.service.accessCode(
userId: userName,
password: encryptedPassword,
firebaseToken: token ?? "",
customerType: customerType,
success: { (user) in
let accessCode = user?.accessCode ?? ""
let accessCodeBase64 = accessCode
Utility.save(user: user, accessCodeBase64: accessCodeBase64, password: encryptedPassword, login: true)
self.output?.loggedIn()
},
failure: { (error) in
self.output?.show(error: error)
guard
let storedEmail = KeyChain.shared.get(key: .id),
storedEmail == userName else {
return
}
KeyChain.shared.removeAll()
}
)
}
}
}