// // RegisterViewController.swift // GMERemittance // // Created by gme_2 on 10/09/2018. //Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved. // import UIKit import Localize_Swift class RegisterViewController: UIViewController { struct StringConstants { let userIdTitle = "login_user_id_text".localized() let useridPlaceholder = "email_text".localized() let passwordTitle = "password_text".localized() let passwordPlaceholder = "create_password_text".localized() let confirmPasswordTitle = "confirm_password_text".localized() let confirmPasswordPlaceholder = "confirm_password_text".localized() let dobTitlePlaceholder = "dob_text".localized() let alreadyHaveAccountText = "already_have_account_text".localized() let loginText = "login_text".localized() let registerText = "register_text".localized() let registerHeader = "register_title_text".localized() let registerSubtitle = "register_subtitle_text".localized() } // MARK: IBOutlets @IBOutlet weak var emailTextField: UITextField! @IBOutlet weak var passwordTextField: UITextField! @IBOutlet weak var confirmPasswordTextfield: UITextField! @IBOutlet weak var dobTextField: UITextField! // header labels @IBOutlet weak var headerLabel: UILabel! @IBOutlet weak var subHeaderLabel: UILabel! // title labels @IBOutlet weak var userIdTitleLabel: UILabel! @IBOutlet weak var passwordTitleLabel: UILabel! @IBOutlet weak var confirmPasswordTitleLabel: UILabel! @IBOutlet weak var dobTitileLabel: UILabel! @IBOutlet weak var alreadyHaveAccountLabel: UILabel! // buttons @IBOutlet weak var loginButton: UIButton! @IBOutlet weak var registerButton: UIButton! // MARK: Properties let datePicker = UIDatePicker() var presenter: RegisterModuleInterface? // keyboard var mQwertyTransKeyView : TransKeyView? var mNumberTransKeyView : TransKeyView? var secureKey : NSData! var numberCipherString : String! var qwertyCipherString : String! var isTranskeyShowing : Bool! var isShowQwerty : Bool! = true var isShowNumber : Bool! var password: String! { didSet { self.passwordTextField.text = password } } var encryptedPassword: String! var encryptedConfirmPassword: String! var confirmPassword: String! { didSet { self.confirmPasswordTextfield.text = confirmPassword } } var showingPasswordField = false var showingConfirmPasswordField: Bool = false // MARK: VC's Life cycle override func viewDidLoad() { super.viewDidLoad() self.setupKeyboard() self.setup() } override func viewWillAppear(_ animated: Bool) { super.viewWillAppear(animated) self.setupPicturedNavBar() } override func viewWillDisappear(_ animated: Bool) { super.viewWillDisappear(animated) self.navigationItem.title = "" mQwertyTransKeyView?.mTK_ClearDelegateSubviews() mNumberTransKeyView?.mTK_ClearDelegateSubviews() if isTranskeyShowing == false { mQwertyTransKeyView?.delegate = nil; mNumberTransKeyView?.delegate = nil; } } // MARK: IBActions @IBAction func login(_ sender: UIButton) { self.presenter?.login() } private func setupDatePicker() { self.datePicker.datePickerMode = .date self.dobTextField.inputView = datePicker datePicker.maximumDate = Date() self.datePicker.addTarget(self, action: #selector(handleDatePicker(sender:)), for: .valueChanged) } @objc private func handleDatePicker(sender: UIDatePicker) { let dateFormatter = DateFormatter() dateFormatter.dateFormat = "yyyy-MM-dd" self.dobTextField.text = dateFormatter.string(from: sender.date) } @IBAction func register(_ sender: UIButton) { let email = self.emailTextField.text! // let password = self.passwordTextField.text! let password = self.password let dob = self.dobTextField.text! let confirmPassword = self.confirmPasswordTextfield.text! let model = RegisterRequestModel() model.username = email model.password = password model.encryptedConfirmPassword = self.encryptedConfirmPassword model.confirmPassword = confirmPassword model.dob = dob model.encryptedPassword = self.encryptedPassword self.presenter?.register(model: model) } // MARK: Other Functions func setupKeyboard() { isShowNumber = false isShowQwerty = true isTranskeyShowing = false setQwertyTranskey() // self.showQwertyTranskeyAction() } func setQwertyTranskey(){ mQwertyTransKeyView = TransKeyView() mQwertyTransKeyView?.mTK_Init(self) mQwertyTransKeyView?.delegate = self mQwertyTransKeyView?.mTK_MakeSecureKey() mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait) mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false) // ccr key mQwertyTransKeyView?.mTK_LicenseCheck("license_IBK_TEST_IONEBANK_20181105_20190531") } private func setup() { // all setup should be done here self.setupPicturedNavBar() self.setupDatePicker() self.configureLanguage() self.passwordTextField.delegate = self self.confirmPasswordTextfield.delegate = self } private func configureLanguage() { self.headerLabel.text = StringConstants().registerHeader self.subHeaderLabel.text = StringConstants().registerSubtitle self.userIdTitleLabel.text = "email_text".localized() self.emailTextField.placeholder = StringConstants().useridPlaceholder let passwordPlaceholder = StringConstants().passwordPlaceholder let attributedPasswordPlaceholder = NSMutableAttributedString(string: passwordPlaceholder) let passwordPolicy = " (\("password_policy_error".localized()))" let font = UIFont.init(name: "SanFranciscoDisplay-regular", size: 12)! let myAttribute = [ NSAttributedString.Key.foregroundColor: UIColor.lightGray, NSAttributedStringKey.font : font ] let attributedPasswordPolicy = NSAttributedString(string: passwordPolicy, attributes: myAttribute) attributedPasswordPlaceholder.append(attributedPasswordPolicy) self.passwordTitleLabel.attributedText = attributedPasswordPlaceholder self.passwordTextField.placeholder = StringConstants().passwordPlaceholder self.confirmPasswordTitleLabel.text = StringConstants().confirmPasswordPlaceholder self.confirmPasswordTextfield.placeholder = StringConstants().confirmPasswordPlaceholder self.dobTitileLabel.text = StringConstants().dobTitlePlaceholder self.dobTextField.placeholder = StringConstants().dobTitlePlaceholder self.alreadyHaveAccountLabel.text = StringConstants().alreadyHaveAccountText self.loginButton.setTitle(StringConstants().loginText, for: .normal) self.registerButton.setTitle(StringConstants().registerText, for: .normal) } } // MARK: RegisterViewInterface extension RegisterViewController: RegisterViewInterface { func showLoading() { self.showProgressHud() } func hideLoading() { self.hideProgressHud() } func show(error: String) { self.alert(message: error) } func show(message: String) { self.alertWithOk(message: message, title: "Success", okTitle: "Ok") { self.presenter?.login() } } } extension RegisterViewController: TransKeyViewDelegate { func secureInputFinish(_ type: Int) { NSLog("secureInputFinish Btn Type : %d", type) NSLog("secureInputFinish"); var targetView : TransKeyView? NSLog("qwerty : " + isShowQwerty.description + " number : " + isShowNumber.description) if isShowQwerty == true{ qwertyCipherString = mQwertyTransKeyView?.mTK_GetSecureData() if showingPasswordField { if mQwertyTransKeyView?.mTK_GetDataLength() == 0 { self.encryptedPassword = "" self.passwordTextField.text = "" }else { self.encryptedPassword = qwertyCipherString self.passwordTextField.text = "password" } } if showingConfirmPasswordField { if mQwertyTransKeyView?.mTK_GetDataLength() == 0 { encryptedConfirmPassword = "" self.confirmPasswordTextfield.text = "" }else { encryptedConfirmPassword = qwertyCipherString self.confirmPasswordTextfield.text = "password" } } targetView = mQwertyTransKeyView // self.mQwertyTransKeyView?.dismissViewControllerAnimated(true, completion: nil) } isShowQwerty = false isShowNumber = false isTranskeyShowing = false targetView?.dismiss(animated: true, completion: nil) } func showQwertyPasswordTranskeyAction(){ // let pbkdfKey = "acc4af609fad57f1cd870a5d94092a24be5fd974" //// let salts = { 1, 6, 0, 7, 4, 4, 4, 4, 8, 8, 7, 1, 4, 3, 3, 3, 3, 3, 3, 3} // var PBKDF2_SALT : NSData! // let PBKDF2_IT = 512; // mQwertyTransKeyView?.mTK_SetPBKDF_RandKey(<#T##randkey: NSData!##NSData!#>) // setQwertyTranskey() if mQwertyTransKeyView?.isBeingPresented == false { isShowQwerty = true isTranskeyShowing = true let hintStr = String(format:"password", 0) let font = UIFont(name: "Arial", size: 15) mQwertyTransKeyView?.mTK_SetHint(hintStr, font: font) mQwertyTransKeyView?.mTK_ShowMessageIfMaxLength("16자리 입력이 초과되었습니다.") mQwertyTransKeyView?.mTK_UseCursor(true) mQwertyTransKeyView?.mTK_UseAllDeleteButton(true) mQwertyTransKeyView?.mTK_UseNavigationBar(true) mQwertyTransKeyView?.mTK_UseVoiceOver(true) mQwertyTransKeyView?.mTK_setHideInputPasswordDelay(3) mQwertyTransKeyView?.mTK_SetControlCenter(false) mQwertyTransKeyView?.mTK_setIgnoreStatusbar(false) // mQwertyTransKeyView?.mTK_SetLanguage(1) mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortraitAndLandscape) mQwertyTransKeyView?.mTK_UseShiftOptional(true) mQwertyTransKeyView?.setKeyboardType(self, keypadType: 0, mTK_inputType: 2, mTK_inputTitle: "password", mTK_cryptType: 0, mTK_maxLength: 100, mTK_minLength: 0, mTK_keypadUpper: false, mTK_languageType: 1) mQwertyTransKeyView?.mTK_EnableSamekeyInputDataEncrypt(false) mQwertyTransKeyView?.mTK_SetUseBalloonImageButton(true) if let mQwertyTransKeyView = mQwertyTransKeyView { self.present(mQwertyTransKeyView, animated: true, completion: nil) } } } } extension RegisterViewController: UITextFieldDelegate { func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { if textField == passwordTextField { self.showingPasswordField = true self.showingConfirmPasswordField = false self.showQwertyPasswordTranskeyAction() return false } if textField == confirmPasswordTextfield { self.showingConfirmPasswordField = true self.showingPasswordField = false self.showQwertyPasswordTranskeyAction() return false } return true } }