element-ios/Riot/Managers/PasswordStrength/PasswordStrengthManager.swift

39 lines
1011 B
Swift

/*
Copyright 2019-2024 New Vector Ltd.
SPDX-License-Identifier: AGPL-3.0-only
Please see LICENSE in the repository root for full details.
*/
import Foundation
import zxcvbn_ios
/// PasswordStrengthManager computes password strength for a given string.
final class PasswordStrengthManager {
// MARK: - Properties
private let zxcvbn = DBZxcvbn()
// MARK: - Public
func passwordStrength(for password: String) -> PasswordStrength {
guard let result = zxcvbn.passwordStrength(password) else {
return .tooGuessable
}
return self.passwordStrength(from: result.score)
}
// MARK: - Private
private func passwordStrength(from zxcvbnScore: Int32) -> PasswordStrength {
let passwordStrengthRawValue = UInt(zxcvbnScore)
guard let passwordStrength = PasswordStrength(rawValue: passwordStrengthRawValue) else {
return .tooGuessable
}
return passwordStrength
}
}