| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- // Copyright 2023 Google LLC
- //
- // Licensed under the Apache License, Version 2.0 (the "License");
- // you may not use this file except in compliance with the License.
- // You may obtain a copy of the License at
- //
- // http://www.apache.org/licenses/LICENSE-2.0
- //
- // Unless required by applicable law or agreed to in writing, software
- // distributed under the License is distributed on an "AS IS" BASIS,
- // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- // See the License for the specific language governing permissions and
- // limitations under the License.
- import Foundation
- extension AdditionalUserInfo: NSSecureCoding {}
- @objc(FIRAdditionalUserInfo) open class AdditionalUserInfo: NSObject {
- /// The provider identifier.
- @objc public let providerID: String
- /// Dictionary containing the additional IdP specific information.
- @objc public let profile: [String: Any]?
- /// The name of the user.
- @objc public let username: String?
- /// Indicates whether or not the current user was signed in for the first time.
- @objc public let isNewUser: Bool
- // Maintain newUser for Objective-C API.
- /// Indicates whether or not the current user was signed in for the first time.
- @objc open func newUser() -> Bool {
- return isNewUser
- }
- init(providerID: String, profile: [String: Any]?, username: String?, isNewUser: Bool) {
- self.providerID = providerID
- self.profile = profile
- self.username = username
- self.isNewUser = isNewUser
- }
- // MARK: Secure Coding
- private static let providerIDCodingKey = "providerID"
- private static let profileCodingKey = "profile"
- private static let usernameCodingKey = "username"
- private static let newUserKey = "newUser"
- public static var supportsSecureCoding: Bool {
- return true
- }
- public required init?(coder aDecoder: NSCoder) {
- guard let providerID = aDecoder.decodeObject(
- of: NSString.self,
- forKey: AdditionalUserInfo.providerIDCodingKey
- ) as? String else {
- return nil
- }
- self.providerID = providerID
- profile = aDecoder.decodeObject(
- of: [NSDictionary.self, NSString.self],
- forKey: AdditionalUserInfo.profileCodingKey
- ) as? [String: Any]
- username = aDecoder.decodeObject(
- of: NSString.self,
- forKey: AdditionalUserInfo.usernameCodingKey
- ) as String?
- if let newUser = aDecoder.decodeObject(
- of: NSNumber.self,
- forKey: AdditionalUserInfo.newUserKey
- ) {
- isNewUser = newUser.intValue == 1
- } else {
- isNewUser = false
- }
- }
- public func encode(with aCoder: NSCoder) {
- aCoder.encode(providerID, forKey: AdditionalUserInfo.providerIDCodingKey)
- aCoder.encode(profile, forKey: AdditionalUserInfo.profileCodingKey)
- aCoder.encode(username, forKey: AdditionalUserInfo.usernameCodingKey)
- aCoder.encode(isNewUser ? NSNumber(1) : NSNumber(0), forKey: AdditionalUserInfo.newUserKey)
- }
- }
|