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.

317 lines
11 KiB

6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
6 years ago
  1. //
  2. // RegisterViewController.swift
  3. // GMERemittance
  4. //
  5. // Created by gme_2 on 10/09/2018.
  6. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
  7. //
  8. import UIKit
  9. class RegisterViewController: UIViewController {
  10. struct StringConstants {
  11. let userIdTitle = "login_user_id_text".localized()
  12. let useridPlaceholder = "email_text".localized()
  13. let passwordTitle = "password_text".localized()
  14. let passwordPlaceholder = "create_password_text".localized()
  15. let confirmPasswordTitle = "confirm_password_text".localized()
  16. let confirmPasswordPlaceholder = "confirm_password_text".localized()
  17. let dobTitlePlaceholder = "dob_text".localized()
  18. let alreadyHaveAccountText = "already_have_account_text".localized()
  19. let loginText = "login_text".localized()
  20. let registerText = "register_text".localized()
  21. let registerHeader = "register_title_text".localized()
  22. let registerSubtitle = "register_subtitle_text".localized()
  23. }
  24. // MARK: IBOutlets
  25. @IBOutlet weak var emailTextField: UITextField!
  26. @IBOutlet weak var passwordTextField: UITextField!
  27. @IBOutlet weak var confirmPasswordTextfield: UITextField!
  28. @IBOutlet weak var dobTextField: UITextField!
  29. // header labels
  30. @IBOutlet weak var headerLabel: UILabel!
  31. @IBOutlet weak var subHeaderLabel: UILabel!
  32. // title labels
  33. @IBOutlet weak var userIdTitleLabel: UILabel!
  34. @IBOutlet weak var passwordTitleLabel: UILabel!
  35. @IBOutlet weak var confirmPasswordTitleLabel: UILabel!
  36. @IBOutlet weak var dobTitileLabel: UILabel!
  37. @IBOutlet weak var alreadyHaveAccountLabel: UILabel!
  38. // buttons
  39. @IBOutlet weak var loginButton: UIButton!
  40. @IBOutlet weak var registerButton: UIButton!
  41. // MARK: Properties
  42. let datePicker = UIDatePicker()
  43. var presenter: RegisterModuleInterface?
  44. // keyboard
  45. var mQwertyTransKeyView : TransKeyView?
  46. var mNumberTransKeyView : TransKeyView?
  47. var secureKey : NSData!
  48. var numberCipherString : String!
  49. var qwertyCipherString : String!
  50. var isTranskeyShowing : Bool!
  51. var isShowQwerty : Bool! = true
  52. var isShowNumber : Bool!
  53. var password: String! {
  54. didSet {
  55. self.passwordTextField.text = password
  56. }
  57. }
  58. var encryptedPassword: String!
  59. var encryptedConfirmPassword: String!
  60. var confirmPassword: String! {
  61. didSet {
  62. self.confirmPasswordTextfield.text = confirmPassword
  63. }
  64. }
  65. var showingPasswordField = false
  66. var showingConfirmPasswordField: Bool = false
  67. // MARK: VC's Life cycle
  68. override func viewDidLoad() {
  69. super.viewDidLoad()
  70. self.setupKeyboard()
  71. self.setup()
  72. }
  73. override func viewWillAppear(_ animated: Bool) {
  74. super.viewWillAppear(animated)
  75. self.setupPicturedNavBar()
  76. }
  77. override func viewWillDisappear(_ animated: Bool) {
  78. super.viewWillDisappear(animated)
  79. self.navigationItem.title = ""
  80. mQwertyTransKeyView?.mTK_ClearDelegateSubviews()
  81. mNumberTransKeyView?.mTK_ClearDelegateSubviews()
  82. if isTranskeyShowing == false {
  83. mQwertyTransKeyView?.delegate = nil;
  84. mNumberTransKeyView?.delegate = nil;
  85. }
  86. }
  87. // MARK: IBActions
  88. @IBAction func login(_ sender: UIButton) {
  89. self.presenter?.login()
  90. }
  91. private func setupDatePicker() {
  92. self.datePicker.datePickerMode = .date
  93. self.dobTextField.inputView = datePicker
  94. datePicker.maximumDate = Date()
  95. self.datePicker.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged)
  96. }
  97. @objc private func handleDatePicker(sender: UIDatePicker) {
  98. let dateFormatter = DateFormatter()
  99. dateFormatter.dateFormat = "yyyy-MM-dd"
  100. self.dobTextField.text = dateFormatter.string(from: sender.date)
  101. }
  102. @IBAction func register(_ sender: UIButton) {
  103. let email = self.emailTextField.text!
  104. // let password = self.passwordTextField.text!
  105. let password = self.password
  106. let dob = self.dobTextField.text!
  107. let confirmPassword = self.confirmPasswordTextfield.text!
  108. let model = RegisterRequestModel()
  109. model.username = email
  110. model.password = password
  111. model.encryptedConfirmPassword = self.encryptedConfirmPassword
  112. model.confirmPassword = confirmPassword
  113. model.dob = dob
  114. model.encryptedPassword = self.encryptedPassword
  115. self.presenter?.register(model: model)
  116. }
  117. // MARK: Other Functions
  118. func setupKeyboard() {
  119. isShowNumber = false
  120. isShowQwerty = true
  121. isTranskeyShowing = false
  122. setQwertyTranskey()
  123. // self.showQwertyTranskeyAction()
  124. }
  125. func setQwertyTranskey(){
  126. mQwertyTransKeyView = TransKeyView()
  127. mQwertyTransKeyView?.mTK_Init(self)
  128. mQwertyTransKeyView?.delegate = self
  129. mQwertyTransKeyView?.mTK_MakeSecureKey()
  130. mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait)
  131. mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false)
  132. // ccr key
  133. mQwertyTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531")
  134. }
  135. private func setup() {
  136. // all setup should be done here
  137. self.setupPicturedNavBar()
  138. self.setupDatePicker()
  139. self.configureLanguage()
  140. self.passwordTextField.delegate = self
  141. self.confirmPasswordTextfield.delegate = self
  142. }
  143. private func configureLanguage() {
  144. self.headerLabel.text = StringConstants().registerHeader
  145. self.subHeaderLabel.text = StringConstants().registerSubtitle
  146. self.userIdTitleLabel.text = StringConstants().userIdTitle
  147. self.emailTextField.placeholder = StringConstants().useridPlaceholder
  148. self.passwordTitleLabel.text = StringConstants().passwordPlaceholder
  149. self.confirmPasswordTitleLabel.text = StringConstants().confirmPasswordPlaceholder
  150. self.confirmPasswordTextfield.placeholder = StringConstants().confirmPasswordPlaceholder
  151. self.dobTitileLabel.text = StringConstants().dobTitlePlaceholder
  152. self.dobTextField.placeholder = StringConstants().dobTitlePlaceholder
  153. self.alreadyHaveAccountLabel.text = StringConstants().alreadyHaveAccountText
  154. self.loginButton.setTitle(StringConstants().loginText, for: .normal)
  155. self.registerButton.setTitle(StringConstants().registerText, for: .normal)
  156. }
  157. }
  158. // MARK: RegisterViewInterface
  159. extension RegisterViewController: RegisterViewInterface {
  160. func showLoading() {
  161. self.showProgressHud()
  162. }
  163. func hideLoading() {
  164. self.hideProgressHud()
  165. }
  166. func show(error: String) {
  167. self.alert(message: error)
  168. }
  169. func show(message: String) {
  170. self.alertWithOk(message: message, title: "Success", okTitle: "Ok") {
  171. self.presenter?.login()
  172. }
  173. }
  174. }
  175. extension RegisterViewController: TransKeyViewDelegate {
  176. func secureInputFinish(_ type: Int) {
  177. NSLog("secureInputFinish Btn Type : %d", type)
  178. NSLog("secureInputFinish");
  179. var targetView : TransKeyView?
  180. NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description)
  181. if isShowQwerty == true{
  182. qwertyCipherString = mQwertyTransKeyView?.mTK_GetSecureData()
  183. if showingPasswordField {
  184. self.encryptedPassword = qwertyCipherString
  185. self.passwordTextField.text = "password"
  186. }
  187. if showingConfirmPasswordField {
  188. encryptedConfirmPassword = qwertyCipherString
  189. self.confirmPasswordTextfield.text = "password"
  190. }
  191. targetView = mQwertyTransKeyView
  192. // self.mQwertyTransKeyView?.dismissViewControllerAnimated(true, completion: nil)
  193. }
  194. isShowQwerty = false
  195. isShowNumber = false
  196. isTranskeyShowing = false
  197. targetView?.dismiss(animated: true, completion: nil)
  198. }
  199. func showQwertyPasswordTranskeyAction(){
  200. // let pbkdfKey = "acc4af609fad57f1cd870a5d94092a24be5fd974"
  201. //// let salts = { 1, 6, 0, 7, 4, 4, 4, 4, 8, 8, 7, 1, 4, 3, 3, 3, 3, 3, 3, 3}
  202. // var PBKDF2_SALT : NSData!
  203. // let PBKDF2_IT = 512;
  204. // mQwertyTransKeyView?.mTK_SetPBKDF_RandKey(<#T##randkey: NSData!##NSData!#>)
  205. // setQwertyTranskey()
  206. if mQwertyTransKeyView?.isBeingPresented == false {
  207. isShowQwerty = true
  208. isTranskeyShowing = true
  209. let hintStr = String(format:"password", 0)
  210. let font = UIFont(name: "Arial", size: 15)
  211. mQwertyTransKeyView?.mTK_SetHint(hintStr, font: font)
  212. mQwertyTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.")
  213. mQwertyTransKeyView?.mTK_UseCursor(true)
  214. mQwertyTransKeyView?.mTK_UseAllDeleteButton(true)
  215. mQwertyTransKeyView?.mTK_UseNavigationBar(true)
  216. mQwertyTransKeyView?.mTK_UseVoiceOver(true)
  217. mQwertyTransKeyView?.mTK_setHideInputPasswordDelay(3)
  218. mQwertyTransKeyView?.mTK_SetControlCenter(false)
  219. mQwertyTransKeyView?.mTK_setIgnoreStatusbar(false)
  220. // mQwertyTransKeyView?.mTK_SetLanguage(1)
  221. mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape)
  222. mQwertyTransKeyView?.setKeyboardType(self,
  223. keypadType: 0,
  224. mTK_inputType: 2,
  225. mTK_inputTitle: "password",
  226. mTK_cryptType: 0,
  227. mTK_maxLength: 100,
  228. mTK_minLength: 0,
  229. mTK_keypadUpper: false,
  230. mTK_languageType: 1)
  231. mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false)
  232. mQwertyTransKeyView?.mTK_SetUseBalloonImageButton(true)
  233. if let mQwertyTransKeyView = mQwertyTransKeyView {
  234. self.present(mQwertyTransKeyView, animated: true, completion: nil)
  235. }
  236. }
  237. }
  238. }
  239. extension RegisterViewController: UITextFieldDelegate {
  240. func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool {
  241. if textField == passwordTextField {
  242. self.showingPasswordField = true
  243. self.showingConfirmPasswordField = false
  244. self.showQwertyPasswordTranskeyAction()
  245. return false
  246. }
  247. if textField == confirmPasswordTextfield {
  248. self.showingConfirmPasswordField = true
  249. self.showingPasswordField = false
  250. self.showQwertyPasswordTranskeyAction()
  251. return false
  252. }
  253. return true
  254. }
  255. }