/// <summary> /// Creates a new account if no account exists with the given username. /// </summary> /// <param name="username"></param> /// <returns></returns> public async Task <Account> CreateAccountAsync(string username, string password) { using var context = GetDatabaseContext(); var original = await context.Account .SingleOrDefaultAsync(a => a.Username == username); if (original == null) { // Compute password hash and salt value var credentials = PasswordSecurity.CreateSecurityCredentials(password); original = new Account { AccountKey = Guid.NewGuid(), Username = username, PasswordHash = credentials.PasswordHash, Salt = credentials.SaltValue }; context.Add(original); await context.SaveChangesAsync(); } return(original); }