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

//
// RegisterViewController.swift
// GMERemittance
//
// Created by gme_2 on 10/09/2018.
//Copyright © 2018 Gobal Money Express Co. Ltd. All rights reserved.
//
import UIKit
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 = StringConstants().userIdTitle
self.emailTextField.placeholder = StringConstants().useridPlaceholder
self.passwordTitleLabel.text = 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 {
self.encryptedPassword = qwertyCipherString
self.passwordTextField.text = "password"
}
if showingConfirmPasswordField {
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?.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
}
}