示例#1
0
            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);
            }