|
|
@ -50,22 +50,17 @@ class LoginViewController: UIViewController { |
|
|
|
@IBOutlet weak var logoImageView: UIImageView! |
|
|
|
@IBOutlet weak var loginButton: UIButton! |
|
|
|
|
|
|
|
|
|
|
|
// keyboard |
|
|
|
var mQwertyTransKeyView : TransKeyView? |
|
|
|
var mNumberTransKeyView : TransKeyView? |
|
|
|
|
|
|
|
var secureKey : NSData! |
|
|
|
var encryptedPassword : String? |
|
|
|
|
|
|
|
var numberCipherString : String! |
|
|
|
var qwertyCipherString : String! |
|
|
|
|
|
|
|
var isTranskeyShowing : Bool! |
|
|
|
var isShowQwerty : Bool! = true |
|
|
|
var isShowNumber : Bool! |
|
|
|
|
|
|
|
|
|
|
|
var encryptedPassword : String? { |
|
|
|
didSet { |
|
|
|
guard |
|
|
|
let email = self.userNameTextField.text, |
|
|
|
let pw = self.encryptedPassword, |
|
|
|
email != "", pw != "" else {return} |
|
|
|
|
|
|
|
self.login(UIButton()) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
// MARK: Properties |
|
|
|
|
|
|
|
var presenter: LoginModuleInterface? |
|
|
@ -81,17 +76,10 @@ class LoginViewController: UIViewController { |
|
|
|
|
|
|
|
override func viewDidDisappear(_ animated: Bool) { |
|
|
|
super.viewDidDisappear(animated) |
|
|
|
mQwertyTransKeyView?.mTK_ClearDelegateSubviews() |
|
|
|
mNumberTransKeyView?.mTK_ClearDelegateSubviews() |
|
|
|
if isTranskeyShowing == false { |
|
|
|
mQwertyTransKeyView?.delegate = nil; |
|
|
|
mNumberTransKeyView?.delegate = nil; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
override func viewWillAppear(_ animated: Bool) { |
|
|
|
super.viewWillAppear(animated) |
|
|
|
self.setupKeyboard() |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
@ -127,8 +115,6 @@ class LoginViewController: UIViewController { |
|
|
|
// showAnimation() |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
func authenticateUser() { |
|
|
|
let context : LAContext = LAContext() |
|
|
|
var error: NSError? |
|
|
@ -159,28 +145,7 @@ class LoginViewController: UIViewController { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
func setupKeyboard() { |
|
|
|
isShowNumber = false |
|
|
|
isShowQwerty = true |
|
|
|
isTranskeyShowing = false |
|
|
|
let iv: Array<String> = ["M", "o", "b", "i", "l", "e", "T", "r" , "a", "n", "s", "K", "e", "y", "1", "0"] |
|
|
|
secureKey = NSData(bytes: iv, length: 16) |
|
|
|
setQwertyTranskey() |
|
|
|
// self.showQwertyTranskeyAction() |
|
|
|
} |
|
|
|
|
|
|
|
func setQwertyTranskey() { |
|
|
|
mQwertyTransKeyView = TransKeyView() |
|
|
|
mQwertyTransKeyView?.mTK_Init(self) |
|
|
|
mQwertyTransKeyView?.delegate = self |
|
|
|
mQwertyTransKeyView?.mTK_MakeSecureKey() |
|
|
|
mQwertyTransKeyView?.mTK_Supported(byDeviceOrientation: SupportedByDevicePortrait) |
|
|
|
// ccr key |
|
|
|
mQwertyTransKeyView?.mTK_LicenseCheck("license_mtranskey") |
|
|
|
} |
|
|
|
|
|
|
|
private func configureLanguage() { |
|
|
|
// Localize.setCurrentLanguage("en") |
|
|
|
self.headerTitle.text = StringConstants().headerTitle |
|
|
|
self.subtitle.text = StringConstants().subHeaderTitle |
|
|
|
self.userIdTitleLabel.text = "email_text".localized() |
|
|
@ -270,20 +235,13 @@ class LoginViewController: UIViewController { |
|
|
|
let isUseBiometricAuth = KeyChain.shared.get(key: .biometricAuth), |
|
|
|
email == typedEmail, |
|
|
|
isUseBiometricAuth == "1" else { |
|
|
|
self.showQwertyTranskeyAction() |
|
|
|
let secureKeypad = SecureKeypad(target: self) |
|
|
|
secureKeypad.delegate = self |
|
|
|
secureKeypad.present(animated: true) |
|
|
|
return |
|
|
|
} |
|
|
|
|
|
|
|
BiometricAuthenticationWireframe().openWithDelegate(on: self, delegate: self) |
|
|
|
|
|
|
|
// guard let email = self.userNameTextField.text, |
|
|
|
// let isUseBiometricAuth = UserKeychain(email: email).isUseBiometricAuth, |
|
|
|
// isUseBiometricAuth, |
|
|
|
// let password = UserKeychain.default.encryptedPassword, password != "" else { |
|
|
|
// self.showQwertyTranskeyAction() |
|
|
|
// return |
|
|
|
// } |
|
|
|
// BiometricAuthenticationWireframe().openWithDelegate(on: self, delegate: self) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
@ -302,77 +260,7 @@ extension LoginViewController: LoginViewInterface { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
extension LoginViewController: TransKeyViewDelegate { |
|
|
|
func secureInputFinish(_ type: Int) { |
|
|
|
var targetView : TransKeyView? |
|
|
|
if isShowQwerty == true { |
|
|
|
qwertyCipherString = mQwertyTransKeyView?.mTK_GetSecureData() |
|
|
|
targetView = mQwertyTransKeyView |
|
|
|
if mQwertyTransKeyView?.mTK_GetDataLength() == 0 { |
|
|
|
self.encryptedPassword = "" |
|
|
|
self.passwordTextField.text = "" |
|
|
|
}else { |
|
|
|
self.encryptedPassword = qwertyCipherString |
|
|
|
self.passwordTextField.text = "password" |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
isShowQwerty = false |
|
|
|
isShowNumber = false |
|
|
|
isTranskeyShowing = false |
|
|
|
targetView?.dismiss(animated: true, completion: { |
|
|
|
guard let email = self.userNameTextField.text, let pw = self.encryptedPassword, |
|
|
|
email != "", pw != "" else {return} |
|
|
|
|
|
|
|
self.login(UIButton()) |
|
|
|
}) |
|
|
|
} |
|
|
|
|
|
|
|
func showQwertyTranskeyAction(){ |
|
|
|
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_UseShiftOptional(true) |
|
|
|
|
|
|
|
// 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(true) |
|
|
|
mQwertyTransKeyView?.mTK_SetUseBalloonImageButton(true) |
|
|
|
if let mQwertyTransKeyView = mQwertyTransKeyView { |
|
|
|
self.present(mQwertyTransKeyView, animated: true, completion: nil) |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// MARK: - UITextFieldDelegate |
|
|
|
extension LoginViewController: UITextFieldDelegate { |
|
|
|
func textFieldShouldBeginEditing(_ textField: UITextField) -> Bool { |
|
|
|
if textField == passwordTextField { |
|
|
@ -390,6 +278,8 @@ extension LoginViewController: UITextFieldDelegate { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// MARK: - BiometricAuthenticationViewControllerDelegate |
|
|
|
extension LoginViewController: BiometricAuthenticationViewControllerDelegate { |
|
|
|
func viewController(_ viewController: BiometricAuthenticationViewController, informationTitleLabel titleLabel: UILabel, authenticationButton button: UIButton) { |
|
|
|
titleLabel.text = "Please enter authentication information for login" |
|
|
@ -409,8 +299,10 @@ extension LoginViewController: BiometricAuthenticationViewControllerDelegate { |
|
|
|
|
|
|
|
switch error { |
|
|
|
case .userFallback, .biometryNotAvailable: |
|
|
|
viewController.dismiss(animated: true){ |
|
|
|
self.showQwertyTranskeyAction() |
|
|
|
viewController.dismiss(animated: true) { |
|
|
|
let secureKeypad = SecureKeypad(target: viewController) |
|
|
|
secureKeypad.delegate = self |
|
|
|
secureKeypad.present(animated: true) |
|
|
|
} |
|
|
|
|
|
|
|
case .notBeConfigured, .biometryNotEnrolled: |
|
|
@ -430,3 +322,13 @@ extension LoginViewController: BiometricAuthenticationViewControllerDelegate { |
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
// MARK: - SecureKeypadDelegate |
|
|
|
extension LoginViewController: SecureKeypadDelegate { |
|
|
|
func didComplete(_ encryptedString: String) { |
|
|
|
if encryptedString != "" { |
|
|
|
self.encryptedPassword = encryptedString |
|
|
|
self.passwordTextField.text = "password" |
|
|
|
} |
|
|
|
} |
|
|
|
} |