mirror of
https://github.com/appwrite/sdk-for-swift.git
synced 2026-06-06 19:27:57 +00:00
89 lines
2.8 KiB
Swift
89 lines
2.8 KiB
Swift
import Foundation
|
|
import JSONCodable
|
|
|
|
/// Policy Password Strength
|
|
open class PolicyPasswordStrength: Codable {
|
|
|
|
enum CodingKeys: String, CodingKey {
|
|
case id = "$id"
|
|
case min = "min"
|
|
case uppercase = "uppercase"
|
|
case lowercase = "lowercase"
|
|
case number = "number"
|
|
case symbols = "symbols"
|
|
}
|
|
|
|
/// Policy ID.
|
|
public let id: String
|
|
/// Minimum password length required for user passwords.
|
|
public let min: Int
|
|
/// Whether passwords must include at least one uppercase letter.
|
|
public let uppercase: Bool
|
|
/// Whether passwords must include at least one lowercase letter.
|
|
public let lowercase: Bool
|
|
/// Whether passwords must include at least one number.
|
|
public let number: Bool
|
|
/// Whether passwords must include at least one symbol.
|
|
public let symbols: Bool
|
|
|
|
init(
|
|
id: String,
|
|
min: Int,
|
|
uppercase: Bool,
|
|
lowercase: Bool,
|
|
number: Bool,
|
|
symbols: Bool
|
|
) {
|
|
self.id = id
|
|
self.min = min
|
|
self.uppercase = uppercase
|
|
self.lowercase = lowercase
|
|
self.number = number
|
|
self.symbols = symbols
|
|
}
|
|
|
|
public required init(from decoder: Decoder) throws {
|
|
let container = try decoder.container(keyedBy: CodingKeys.self)
|
|
|
|
self.id = try container.decode(String.self, forKey: .id)
|
|
self.min = try container.decode(Int.self, forKey: .min)
|
|
self.uppercase = try container.decode(Bool.self, forKey: .uppercase)
|
|
self.lowercase = try container.decode(Bool.self, forKey: .lowercase)
|
|
self.number = try container.decode(Bool.self, forKey: .number)
|
|
self.symbols = try container.decode(Bool.self, forKey: .symbols)
|
|
}
|
|
|
|
public func encode(to encoder: Encoder) throws {
|
|
var container = encoder.container(keyedBy: CodingKeys.self)
|
|
|
|
try container.encode(id, forKey: .id)
|
|
try container.encode(min, forKey: .min)
|
|
try container.encode(uppercase, forKey: .uppercase)
|
|
try container.encode(lowercase, forKey: .lowercase)
|
|
try container.encode(number, forKey: .number)
|
|
try container.encode(symbols, forKey: .symbols)
|
|
}
|
|
|
|
public func toMap() -> [String: Any] {
|
|
return [
|
|
"$id": id as Any,
|
|
"min": min as Any,
|
|
"uppercase": uppercase as Any,
|
|
"lowercase": lowercase as Any,
|
|
"number": number as Any,
|
|
"symbols": symbols as Any
|
|
]
|
|
}
|
|
|
|
public static func from(map: [String: Any] ) -> PolicyPasswordStrength {
|
|
return PolicyPasswordStrength(
|
|
id: map["$id"] as! String,
|
|
min: map["min"] as! Int,
|
|
uppercase: map["uppercase"] as! Bool,
|
|
lowercase: map["lowercase"] as! Bool,
|
|
number: map["number"] as! Bool,
|
|
symbols: map["symbols"] as! Bool
|
|
)
|
|
}
|
|
}
|