passforios/passKit/Models/PasscodeLock.swift
2021-08-27 22:32:31 -07:00

42 lines
1.1 KiB
Swift

//
// PasscodeLock.swift
// passKit
//
// Created by Yishi Lin on 28/1/2018.
// Copyright © 2017 Yishi Lin. All rights reserved.
//
public class PasscodeLock {
public static let shared = PasscodeLock()
private static let identifier = Globals.bundleIdentifier + "passcode"
/// Cached passcode to avoid frequent access to Keychain
private var passcode: String? = AppKeychain.shared.get(for: PasscodeLock.identifier)
/// Constructor used to migrate passcode from SharedDefaults to Keychain
private init() {
if let passcode = Defaults.passcodeKey {
save(passcode: passcode)
Defaults.passcodeKey = nil
}
}
public var hasPasscode: Bool {
passcode != nil
}
public func save(passcode: String) {
AppKeychain.shared.add(string: passcode, for: PasscodeLock.identifier)
self.passcode = passcode
}
public func check(passcode: String) -> Bool {
self.passcode == passcode
}
public func delete() {
AppKeychain.shared.removeContent(for: PasscodeLock.identifier)
passcode = nil
}
}