public User Authenticate(string username, string password) { if (string.IsNullOrEmpty(username) || string.IsNullOrEmpty(password)) { return(null); } var user = _context.Users.SingleOrDefault(x => x.Username == username); if (user == null) { return(null); } if (!PasswordHashHelpers.VerifyPasswordHash(password, user.PasswordHash, user.PasswordSalt)) { return(null); } return(user); }
public async Task <User> CreateAsync(User user, string password) { if (string.IsNullOrWhiteSpace(password)) { throw new AppException("Password is required"); } if (await _context.Users.AnyAsync(x => x.Username == user.Username)) { throw new AppException(string.Format("Username : {0} is already taken", user.Username)); } byte[] passwordHash, passwordSalt; PasswordHashHelpers.CreatePasswordHash(password, out passwordHash, out passwordSalt); user.PasswordHash = passwordHash; user.PasswordSalt = passwordSalt; _context.Users.Add(user); await _context.SaveChangesAsync(); return(user); }