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.
 
 
 
 

83 lines
2.4 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))
}
private func isValid(userName: String, password: String) -> (isValid: Bool, error: Error){
var error = ""
var isValid = true
if userName.isEmpty {
error = error + "\n" + "email_valid_error".localized();
isValid = false
}
if password.isEmpty {error = error + "\n" + "password_empty_error".localized();
isValid = false
}
let _error = NSError.init(domain: "LoginInteractor", code: 0, userInfo: [NSLocalizedDescriptionKey : error])
return (isValid, _error)
}
// MARK: Converting entities
}
// MARK: Login interactor input interface
extension LoginInteractor: LoginInteractorInput {
func login(userName: String, password: String, encryptedPassword: String) {
let username = userName
let validationResult = self.isValid(userName: username, password: encryptedPassword)
if !validationResult.isValid {
self.output?.show(error: validationResult.error)
return
}
guard let passwordBase64Data = self.toBase64(text: password) else {
return
}
print("password converted is")
print(passwordBase64Data)
// send encrypted password to server for kftc
self.service._login(userId: username, password: encryptedPassword, success: { (user) in
let accessCode = user?.accessCode ?? ""
let accessCodeBase64 = accessCode
Utility.save(user: user, accessCodeBase64: accessCodeBase64, password: password, login: true)
self.output?.loggedIn()
}) { (error) in
self.output?.show(error: error)
}
}
}