Created
November 26, 2019 07:57
-
-
Save TsRebornz/bd4bdb250be51746797e24e33d8cee19 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
final class SharedTokenManager { | |
private let tokenKey = "token" | |
private let accessGroup: String | |
init(accessGroup: String) { | |
self.accessGroup = accessGroup | |
} | |
func getToken() -> String? { | |
let queryLoad: [String: AnyObject] = [ | |
kSecClass as String: kSecClassGenericPassword, | |
kSecAttrAccount as String: tokenKey as AnyObject, | |
kSecReturnData as String: kCFBooleanTrue, | |
kSecMatchLimit as String: kSecMatchLimitOne, | |
kSecAttrAccessGroup as String: accessGroup as AnyObject | |
] | |
var result: AnyObject? | |
let resultCodeLoad = withUnsafeMutablePointer(to: &result) { | |
SecItemCopyMatching(queryLoad as CFDictionary, UnsafeMutablePointer($0)) | |
} | |
if resultCodeLoad == noErr { | |
if let result = result as? Data, | |
let keyValue = NSString(data: result, | |
encoding: String.Encoding.utf8.rawValue) as? String { | |
// Found successfully | |
print(keyValue) | |
return keyValue | |
} | |
} else { | |
print("Error loading from Keychain: \(resultCodeLoad)") | |
} | |
return nil | |
} | |
func setToken(token: String) { | |
guard let valueData = token.data(using: String.Encoding.utf8) else { | |
print("Error saving text to Keychain") | |
return | |
} | |
let queryAdd: [String: AnyObject] = [ | |
kSecClass as String: kSecClassGenericPassword, | |
kSecAttrAccount as String: tokenKey as AnyObject, | |
kSecValueData as String: valueData as AnyObject, | |
kSecAttrAccessible as String: kSecAttrAccessibleWhenUnlocked, | |
kSecAttrAccessGroup as String: accessGroup as AnyObject | |
] | |
let resultCode = SecItemAdd(queryAdd as CFDictionary, nil) | |
if resultCode != noErr { | |
print("Error saving to Keychain: \(resultCode)") | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment