| 12345678910111213141516171819202122232425262728293031323334353637 |
- import AuthenticationServices
- enum Login {
- enum Config {
- static let credentialsKey = "FreeAPS.Credentials"
- }
- }
- protocol LoginProvider: Provider {
- func authorize(credentials: ASAuthorizationAppleIDCredential)
- var credentials: ASAuthorizationAppleIDCredential? { get }
- }
- struct CredentialsWrapper: Codable {
- enum CodingKeys: String, CodingKey {
- case credentials
- }
- var credentials: ASAuthorizationAppleIDCredential
- init(_ credentials: ASAuthorizationAppleIDCredential) {
- self.credentials = credentials
- }
- func encode(to encoder: Encoder) throws {
- var container = encoder.container(keyedBy: CodingKeys.self)
- let data = try NSKeyedArchiver.archivedData(withRootObject: credentials, requiringSecureCoding: true)
- try container.encode(data, forKey: .credentials)
- }
- init(from decoder: Decoder) throws {
- let container = try decoder.container(keyedBy: CodingKeys.self)
- let data = try container.decode(Data.self, forKey: .credentials)
- credentials = try (NSKeyedUnarchiver.unarchiveTopLevelObjectWithData(data) as? ASAuthorizationAppleIDCredential)!
- }
- }
|