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.
340 lines
12 KiB
340 lines
12 KiB
//
|
|
// 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
|
|
}
|
|
}
|