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

6 years ago
2 years ago
3 years ago
2 years ago
3 years ago
  1. //
  2. // LoginInteractor.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 07/09/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import Foundation
  9. class LoginInteractor {
  10. // MARK: Properties
  11. weak var output: LoginInteractorOutput?
  12. private let service: LoginServiceType
  13. // MARK: Initialization
  14. init(service: LoginServiceType) {
  15. self.service = service
  16. }
  17. func toBase64(text: String) -> String? {
  18. guard let data = text.data(using: String.Encoding.utf8) else {
  19. return nil
  20. }
  21. return data.base64EncodedString(options: Data.Base64EncodingOptions(rawValue: 0))
  22. }
  23. // MARK: Converting entities
  24. }
  25. // MARK: Login interactor input interface
  26. extension LoginInteractor: LoginInteractorInput {
  27. func login(userName: String, customerType: String, encryptedPassword: String) {
  28. // send encrypted password to server for kftc
  29. GMEDB.shared.getFcmToken { (token, error) in
  30. self.service.accessCode(
  31. userId: userName,
  32. password: encryptedPassword,
  33. firebaseToken: token ?? "",
  34. customerType: customerType,
  35. success: { (user) in
  36. let accessCode = user?.accessCode ?? ""
  37. let accessCodeBase64 = accessCode
  38. Utility.save(user: user, accessCodeBase64: accessCodeBase64, password: encryptedPassword, login: true)
  39. self.output?.loggedIn()
  40. },
  41. failure: { (error) in
  42. self.output?.show(error: error)
  43. guard
  44. let storedEmail = KeyChain.shared.get(key: .id),
  45. storedEmail == userName else {
  46. return
  47. }
  48. KeyChain.shared.removeAll()
  49. }
  50. )
  51. }
  52. }
  53. }