Passcode refactoring & improvements
This commit is contained in:
parent
4861749415
commit
ce2c69e854
|
|
@ -76,11 +76,22 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
|
|||
|
||||
initialLoadView()
|
||||
initialDotNumberConfiguration()
|
||||
enebleKeyboard()
|
||||
configureBackgroundNotifications()
|
||||
showTouchIdIfNeeded(with: touchIdHint)
|
||||
}
|
||||
|
||||
override open func viewWillAppear(_ animated: Bool) {
|
||||
super.viewWillAppear(animated)
|
||||
|
||||
fakeTextField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
override open func viewWillDisappear(_ animated: Bool) {
|
||||
super.viewWillDisappear(animated)
|
||||
|
||||
fakeTextField.resignFirstResponder()
|
||||
}
|
||||
|
||||
// MARK: - Private functions
|
||||
|
||||
private func configureBackgroundNotifications() {
|
||||
|
|
@ -95,10 +106,6 @@ open class BasePassCodeViewController: UIViewController, ConfigurableController
|
|||
.disposed(by: disposeBag)
|
||||
}
|
||||
|
||||
private func enebleKeyboard() {
|
||||
fakeTextField.becomeFirstResponder()
|
||||
}
|
||||
|
||||
private func initialDotNumberConfiguration() {
|
||||
dotStackView.arrangedSubviews.forEach { dotStackView.removeArrangedSubview($0) }
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ import IDZSwiftCommonCrypto
|
|||
open class BasePassCodeService {
|
||||
|
||||
/// Override to set specific keychain service name
|
||||
open class var keychainService: String {
|
||||
open class var keychainServiceString: String {
|
||||
return Bundle.main.bundleIdentifier ?? ""
|
||||
}
|
||||
|
||||
|
|
@ -42,37 +42,34 @@ open class BasePassCodeService {
|
|||
|
||||
// MARK: - Private stuff
|
||||
|
||||
fileprivate lazy var keychain: Keychain = {
|
||||
return Keychain(service: BasePassCodeService.keychainService)
|
||||
.synchronizable(false)
|
||||
}()
|
||||
private lazy var keychain = Keychain(service: BasePassCodeService.keychainServiceString).synchronizable(false)
|
||||
|
||||
fileprivate var passCodeHash: String? {
|
||||
private var passCodeHash: String? {
|
||||
return keychain[Keys.passCodeHash]
|
||||
}
|
||||
|
||||
fileprivate enum Keys {
|
||||
private enum Keys {
|
||||
static let passCodeHash = "passCodeHash"
|
||||
static let isTouchIdEnabled = "isTouchIdEnabled"
|
||||
static let isInitialLoad = "isInitialLoad"
|
||||
}
|
||||
|
||||
fileprivate enum Values {
|
||||
private enum Values {
|
||||
static let touchIdEnabled = "touchIdEnabled"
|
||||
static let initialLoad = "initialLoad"
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
extension BasePassCodeService {
|
||||
public extension BasePassCodeService {
|
||||
|
||||
/// Indicates is pass code already saved on this device
|
||||
public var isPassCodeSaved: Bool {
|
||||
var isPassCodeSaved: Bool {
|
||||
return keychain[Keys.passCodeHash] != nil
|
||||
}
|
||||
|
||||
/// Indicates is it possible to authenticate on this device via touch id
|
||||
public var isTouchIdEnabled: Bool {
|
||||
var isTouchIdEnabled: Bool {
|
||||
get {
|
||||
return keychain[Keys.isTouchIdEnabled] == Values.touchIdEnabled
|
||||
}
|
||||
|
|
@ -82,7 +79,7 @@ extension BasePassCodeService {
|
|||
}
|
||||
|
||||
/// Saves new pass code
|
||||
public func save(passCode: String?) {
|
||||
func save(passCode: String?) {
|
||||
if let passCode = passCode {
|
||||
keychain[Keys.passCodeHash] = sha256(passCode)
|
||||
} else {
|
||||
|
|
@ -91,12 +88,12 @@ extension BasePassCodeService {
|
|||
}
|
||||
|
||||
/// Check if pass code is correct
|
||||
public func check(passCode: String) -> Bool {
|
||||
func check(passCode: String) -> Bool {
|
||||
return sha256(passCode) == passCodeHash
|
||||
}
|
||||
|
||||
/// Reset pass code settings
|
||||
public func reset() {
|
||||
func reset() {
|
||||
save(passCode: nil)
|
||||
isTouchIdEnabled = false
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue