james
6 years ago
6 changed files with 166 additions and 112 deletions
-
4GME Remit.xcodeproj/project.pbxproj
-
36GMERemittance/AppDelegate.swift
-
3GMERemittance/Module/Main/User Interface/Wireframe/MainWireframe.swift
-
59GMERemittance/Utility/AppConstants.swift
-
83GMERemittance/Utility/UserKeychain.swift
-
93GMERemittanceTests/KeychainTest.swift
@ -0,0 +1,83 @@ |
|||
// |
|||
// UserKeychain.swift |
|||
// GME Remit |
|||
// |
|||
// Created by InKwon Devik Kim on 19/04/2019. |
|||
// Copyright © 2019 Gobal Money Express Co. Ltd. All rights reserved. |
|||
// |
|||
|
|||
import Foundation |
|||
import KeychainAccess |
|||
final class UserKeychain { |
|||
|
|||
struct UserKeychainInfo { |
|||
var encryptedPassword: String |
|||
var isUseBiometricAuth: Bool |
|||
} |
|||
|
|||
private enum Keys: String{ |
|||
case encryptedPassword = "encryptedPassword" |
|||
case isUseBiometricAuth = "isUseBiometricAuth" |
|||
} |
|||
|
|||
private let keychain: Keychain! |
|||
|
|||
init(email: String? = nil){ |
|||
var userId = "" |
|||
if email == nil { |
|||
userId = UserDefaults.standard.string(forKey: UserKeys.email) ?? "" |
|||
} |
|||
|
|||
self.keychain = Keychain(service: userId) |
|||
} |
|||
|
|||
func fetch() -> UserKeychainInfo? { |
|||
do { |
|||
guard |
|||
let encryptedPassword = try self.keychain.getString(Keys.encryptedPassword.rawValue), |
|||
let isUseBiometricAuth = try self.keychain.getString(Keys.isUseBiometricAuth.rawValue) else { return nil } |
|||
|
|||
return UserKeychainInfo( |
|||
encryptedPassword: encryptedPassword, |
|||
isUseBiometricAuth: isUseBiometricAuth == "1" ? true : false) |
|||
|
|||
} catch _ { |
|||
return nil |
|||
} |
|||
} |
|||
|
|||
func set(_ userInfo: UserKeychainInfo) { |
|||
do { |
|||
try keychain.set( |
|||
userInfo.encryptedPassword, |
|||
key: Keys.encryptedPassword.rawValue |
|||
) |
|||
|
|||
try keychain.set( |
|||
userInfo.isUseBiometricAuth ? "1" : "0", |
|||
key: Keys.isUseBiometricAuth.rawValue |
|||
) |
|||
} |
|||
catch let error { |
|||
print("UserKeychain Error: \(error)") |
|||
} |
|||
} |
|||
|
|||
func removeAll() { |
|||
do { |
|||
try keychain.removeAll() |
|||
} |
|||
catch let error { |
|||
print("UserKeychain Error: \(error)") |
|||
} |
|||
} |
|||
|
|||
func removePassword() { |
|||
do { |
|||
try keychain.remove(Keys.encryptedPassword.rawValue) |
|||
} |
|||
catch let error { |
|||
print("UserKeychain Error: \(error)") |
|||
} |
|||
} |
|||
} |
Write
Preview
Loading…
Cancel
Save
Reference in new issue