using MudBlazor;
namespace RobotNet.IdentityServer.Services;
public class PasswordStrengthService
{
///
/// Đánh giá độ mạnh của mật khẩu (thang điểm 0-100)
///
/// Mật khẩu cần đánh giá
/// Điểm đánh giá từ 0-100
public int EvaluatePasswordStrength(string password)
{
if (string.IsNullOrEmpty(password))
return 0;
int strength = 0;
// Đánh giá dựa trên độ dài
if (password.Length >= 1) strength += 5;
if (password.Length >= 3) strength += 5;
if (password.Length >= 6) strength += 10;
if (password.Length >= 8) strength += 10;
if (password.Length >= 10) strength += 10;
// Đánh giá dựa trên độ phức tạp
if (password.Any(char.IsUpper)) strength += 15;
if (password.Any(char.IsLower)) strength += 15;
if (password.Any(char.IsDigit)) strength += 15;
if (password.Any(c => !char.IsLetterOrDigit(c))) strength += 15;
return System.Math.Min(strength, 100);
}
///
/// Lấy màu tương ứng với độ mạnh của mật khẩu
///
/// Điểm đánh giá độ mạnh (0-100)
/// Color tương ứng
public Color GetStrengthColor(int strength)
{
if (strength < 30) return Color.Error;
if (strength < 60) return Color.Warning;
if (strength < 80) return Color.Info;
return Color.Success;
}
///
/// Lấy mô tả tương ứng với độ mạnh của mật khẩu
///
/// Điểm đánh giá độ mạnh (0-100)
/// Mô tả dạng văn bản
public string GetStrengthDescription(int strength)
{
if (strength == 0) return "Chưa nhập mật khẩu";
if (strength < 30) return "Mật khẩu yếu";
if (strength < 60) return "Mật khẩu trung bình";
if (strength < 80) return "Mật khẩu tốt";
return "Mật khẩu mạnh";
}
}