public async Task <Unit> Handle(Command request, CancellationToken cancellationToken) { User user = await _userManager.FindByEmailAsync(request.Email); if (await _userManager.IsEmailConfirmedAsync(user)) { throw new ValidationException(new[] { new ValidationFailure(nameof(request.Email), "The email address is already confirmed") }); } IdentityResult confirmEmailResult = await _userManager.ConfirmEmailAsync(user, request.Token); if (confirmEmailResult.Succeeded) { return(Unit.Value); } if (confirmEmailResult.Errors.FirstOrDefault()?.Description.Contains("Invalid token") == true) { throw new ValidationException(new ValidationFailure[] { new ValidationFailure(nameof(request.Token), "The supplied token is invalid or has expired") }); } throw new IdentityException("Problem confirming email", confirmEmailResult.Errors); }