1
0
mirror of https://github.com/chylex/Minecraft-Phantom-Panel.git synced 2025-04-29 21:34:07 +02:00
Minecraft-Phantom-Panel/Controller/Phantom.Controller.Services/Users/UserPasswords.cs

39 lines
1.1 KiB
C#

using System.Collections.Immutable;
using Phantom.Controller.Database.Entities;
namespace Phantom.Controller.Services.Users;
internal static class UserPasswords {
private const int MinimumLength = 16;
public static ImmutableArray<PasswordRequirementViolation> CheckRequirements(string password) {
var violations = ImmutableArray.CreateBuilder<PasswordRequirementViolation>();
if (password.Length < MinimumLength) {
violations.Add(new PasswordRequirementViolation.TooShort(MinimumLength));
}
if (!password.Any(char.IsLower)) {
violations.Add(new PasswordRequirementViolation.LowercaseLetterRequired());
}
if (!password.Any(char.IsUpper)) {
violations.Add(new PasswordRequirementViolation.UppercaseLetterRequired());
}
if (!password.Any(char.IsDigit)) {
violations.Add(new PasswordRequirementViolation.DigitRequired());
}
return violations.ToImmutable();
}
public static void Set(UserEntity user, string password) {
user.PasswordHash = BCrypt.Net.BCrypt.HashPassword(password);
}
public static bool Verify(UserEntity user, string password) {
return BCrypt.Net.BCrypt.Verify(password, user.PasswordHash);
}
}