LockScreenDAO.swift 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. //
  2. // LockScreenDAOSwift.swift
  3. // MCPlus
  4. //
  5. // Created by seo ha on 14/02/2019.
  6. // Copyright © 2019 KangSH. All rights reserved.
  7. //
  8. import Foundation
  9. class LockScreenDAO: CustomStringConvertible {
  10. var lockScreenUseYN:Bool?
  11. var touchIDUseYN:Bool?
  12. var arrPassword:[Int]?
  13. var pwInputType:PASSWORD_INPUT_TYPE? = .FIRST_INPUT
  14. var userDefaults = UserDefaults.standard
  15. var requiredYN:Bool?
  16. let LOCK_SCREEN_USE = "lock_screen_use"
  17. let TOUCH_ID_USE = "touch_id_use"
  18. let LOCK_SCREEN_PW = "lock_screen_pw"
  19. let PASSWORD_INPUT_TYPE = "password_input_type"
  20. enum PASSWORD_INPUT_TYPE:Int{
  21. case FIRST_INPUT
  22. case CONFIRM_INPUT
  23. case UNLOCK_INPUT
  24. case UNLOCK_FAIL_RE_INPUT
  25. case CHANGE_FIRST_INPUT
  26. case CHANGE_CONFIRM_INPUT
  27. }
  28. static let sharedInstance = LockScreenDAO()
  29. private init(){
  30. let _ = initPrivate()
  31. }
  32. }
  33. extension LockScreenDAO{
  34. func initPrivate() -> LockScreenDAO{
  35. requiredYN = true
  36. lockScreenUseYN = true
  37. pwInputType = LockScreenDAO.PASSWORD_INPUT_TYPE(rawValue: userDefaults.integer(forKey: self.PASSWORD_INPUT_TYPE))
  38. return self
  39. }
  40. func saveOptionValues(arrPassword:[Int]){
  41. if self.requiredYN == false{
  42. let lockScreenUseYN = self.lockScreenUseYN ?? false
  43. let touchIDUseYN = self.touchIDUseYN ?? false
  44. self.userDefaults.set(lockScreenUseYN, forKey: self.LOCK_SCREEN_USE)
  45. self.userDefaults.set(touchIDUseYN, forKey: self.TOUCH_ID_USE)
  46. }
  47. if let pwInputType = self.pwInputType{
  48. self.userDefaults.set(pwInputType.rawValue, forKey: self.PASSWORD_INPUT_TYPE)
  49. }
  50. // 비밀번호 암호화 저장
  51. self.arrPassword = arrPassword
  52. self.encryptPassword(key: Constants.PACS_APP_ENC_KEY)
  53. }
  54. func encryptPassword(key:String){
  55. guard let arrPassword = self.arrPassword else {
  56. return
  57. }
  58. for i in 0..<arrPassword.count{
  59. if let encPass = String(arrPassword[i]).encryptWithKey(key: key){
  60. self.userDefaults.set(encPass, forKey: "\(i)")
  61. }
  62. }
  63. }
  64. func encryptedPasswordWithKey(key:String) -> String? {
  65. return self.userDefaults.object(forKey: key) as? String
  66. }
  67. func saveOptionValuesWithoutPassword(){
  68. if self.requiredYN == false{
  69. let lockScreenUseYN = self.lockScreenUseYN ?? false
  70. let touchIDUseYN = self.touchIDUseYN ?? false
  71. self.userDefaults.set(lockScreenUseYN, forKey: self.LOCK_SCREEN_USE)
  72. self.userDefaults.set(touchIDUseYN, forKey: self.TOUCH_ID_USE)
  73. }
  74. if let pwInputType = self.pwInputType{
  75. self.userDefaults.set(pwInputType.rawValue, forKey: self.PASSWORD_INPUT_TYPE)
  76. }
  77. }
  78. func loadOptionValues(){
  79. let representation = self.userDefaults.dictionaryRepresentation()
  80. let count = representation.filter({$0.key == LOCK_SCREEN_USE}).count
  81. if count > 0, requiredYN == false{
  82. self.lockScreenUseYN = self.userDefaults.bool(forKey: LOCK_SCREEN_USE)
  83. }
  84. if let pwInputType = self.pwInputType{
  85. self.userDefaults.set(pwInputType.rawValue, forKey: self.PASSWORD_INPUT_TYPE)
  86. }
  87. }
  88. }