Skip to content

Instantly share code, notes, and snippets.

@Mirch
Created September 30, 2018 15:41
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Mirch/89a1c4e82e7d81cc0f6dcdb55d7868d2 to your computer and use it in GitHub Desktop.
Save Mirch/89a1c4e82e7d81cc0f6dcdb55d7868d2 to your computer and use it in GitHub Desktop.
[HttpGet]
public string GeneratePassword()
{
var options = _userManager.Options.Password;
int length = options.RequiredLength;
bool nonAlphanumeric = options.RequireNonAlphanumeric;
bool digit = options.RequireDigit;
bool lowercase = options.RequireLowercase;
bool uppercase = options.RequireUppercase;
StringBuilder password = new StringBuilder();
Random random = new Random();
while (password.Length < length)
{
char c = (char)random.Next(32, 126);
password.Append(c);
if (char.IsDigit(c))
digit = false;
else if (char.IsLower(c))
lowercase = false;
else if (char.IsUpper(c))
uppercase = false;
else if (!char.IsLetterOrDigit(c))
nonAlphanumeric = false;
}
if (nonAlphanumeric)
password.Append((char)random.Next(33, 48));
if (digit)
password.Append((char)random.Next(48, 58));
if (lowercase)
password.Append((char)random.Next(97, 123));
if (uppercase)
password.Append((char)random.Next(65, 91));
return password.ToString();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment