1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- import Foundation
- fileprivate extension UserDefaults {
- struct Account: BoolUserDefaultable, DictionaryUserDefaultable {
- enum DictionaryDefaultKey: String {
- case userInfo
- }
-
- enum BoolDefaultKey: String {
- case isLogin
- case isAudit
- }
- }
- }
- final class UserInfoStore {
- #warning("是否加密存储userId")
- func save(_ userInfo: UserInfo) {
- UserDefaults.Account.set(true, forKey: .isLogin)
- UserDefaults.Account.set(userInfo.toJSON(), forKey: .userInfo)
- }
-
- func delete() {
- UserDefaults.Account.set([:], forKey: .userInfo)
- UserDefaults.Account.set(false, forKey: .isLogin)
- }
-
- func load() -> UserInfo {
- let json = UserDefaults.Account.dictionary(forKey: .userInfo)
- return UserInfo(json: json as [String: AnyObject])
- }
-
- func getUUID() -> String {
- let keyChainDic = NSMutableDictionary()
- keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying)
- keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying)
- keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnAttributes as! NSCopying)
- keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnData as! NSCopying)
- var result: AnyObject?
- var uuid: String? = nil
- SecItemCopyMatching(keyChainDic, &result)
- if let resultDic = result as? NSDictionary {
- if let data = resultDic.object(forKey: kSecValueData) as? Data {
- uuid = NSString(data: data, encoding: String.Encoding.ascii.rawValue) as String?
- }
- }
-
- if let uuid = uuid { return uuid }
- let uuidStr = UUID().uuidString
- let data = uuidStr.data(using: .ascii)
- keyChainDic.setObject(data!, forKey: kSecValueData as! NSCopying)
- SecItemAdd(keyChainDic, nil)
- return uuidStr
- }
- }
|