No Description

UserInfoStore.swift 2.0KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. //
  2. // UserSessionStore.swift
  3. // PaiaiDataKit
  4. //
  5. // Created by ffib on 2018/12/20.
  6. // Copyright © 2018 yb. All rights reserved.
  7. //
  8. import Foundation
  9. fileprivate extension UserDefaults {
  10. struct Account: BoolUserDefaultable, DictionaryUserDefaultable {
  11. enum DictionaryDefaultKey: String {
  12. case userInfo
  13. }
  14. enum BoolDefaultKey: String {
  15. case isLogin
  16. case isAudit
  17. }
  18. }
  19. }
  20. final class UserInfoStore {
  21. #warning("是否加密存储userId")
  22. func save(_ userInfo: UserInfo) {
  23. UserDefaults.Account.set(true, forKey: .isLogin)
  24. UserDefaults.Account.set(userInfo.toJSON(), forKey: .userInfo)
  25. }
  26. func delete() {
  27. UserDefaults.Account.set([:], forKey: .userInfo)
  28. UserDefaults.Account.set(false, forKey: .isLogin)
  29. }
  30. func load() -> UserInfo {
  31. let json = UserDefaults.Account.dictionary(forKey: .userInfo)
  32. return UserInfo(json: json as [String: AnyObject])
  33. }
  34. func getUUID() -> String {
  35. let keyChainDic = NSMutableDictionary()
  36. keyChainDic.setObject(String(kSecClassGenericPassword), forKey: kSecClass as! NSCopying)
  37. keyChainDic.setObject("uuid", forKey: kSecAttrAccount as! NSCopying)
  38. keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnAttributes as! NSCopying)
  39. keyChainDic.setObject(kCFBooleanTrue, forKey: kSecReturnData as! NSCopying)
  40. var result: AnyObject?
  41. var uuid: String? = nil
  42. SecItemCopyMatching(keyChainDic, &result)
  43. if let resultDic = result as? NSDictionary {
  44. if let data = resultDic.object(forKey: kSecValueData) as? Data {
  45. uuid = NSString(data: data, encoding: String.Encoding.ascii.rawValue) as String?
  46. }
  47. }
  48. if let uuid = uuid { return uuid }
  49. let uuidStr = UUID().uuidString
  50. let data = uuidStr.data(using: .ascii)
  51. keyChainDic.setObject(data!, forKey: kSecValueData as! NSCopying)
  52. SecItemAdd(keyChainDic, nil)
  53. return uuidStr
  54. }
  55. }