-
-
Notifications
You must be signed in to change notification settings - Fork 106
/
Copy pathPasscodeLock.swift
41 lines (33 loc) · 976 Bytes
/
PasscodeLock.swift
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//
// 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 let identifier = Globals.bundleIdentifier + "passcode"
private var passcode: String? {
AppKeychain.shared.get(for: 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: identifier)
}
public func check(passcode: String) -> Bool {
self.passcode == passcode
}
public func delete() {
AppKeychain.shared.removeContent(for: identifier)
}
}