public async override Task <CustomerViewModel> ExecuteQuery(AuthenticateCustomerQuery request, CancellationToken cancellationToken) { CustomerViewModel customerViewModel = new CustomerViewModel(); var signIn = await _signInManager .PasswordSignInAsync(request.Email, request.Password, false, true); if (signIn.Succeeded) { var user = await _userManager .FindByEmailAsync(request.Email); if (user == null) { throw new ApplicationDataException("User not found."); } var token = await _jwtService .GenerateJwt(user.Email); //Customer data var customer = await _customers .GetByEmail(user.Email, cancellationToken); customerViewModel.Id = customer.Id.Value; customerViewModel.Name = customer.Name; customerViewModel.Email = user.Email; customerViewModel.Token = token; customerViewModel.LoginSucceeded = signIn.Succeeded; } else { customerViewModel.ValidationResult.Errors.Add(new ValidationFailure(string.Empty, "Usename or password invalid")); } return(customerViewModel); }