public async Task <Unit> Handle(Command request, CancellationToken cancellationToken)
            {
                var user =
                    await _context
                    .Users
                    .SingleOrDefaultAsync(x => x.Email == request.Email);

                if (user == null)
                {
                    throw new RestException(System.Net.HttpStatusCode.BadRequest, "User not found");
                }

                try
                {
                    var resetToken =
                        await _authTokenService.CreateAuthTokenAsync(user.Id, 24);

                    if (!request.ResetPasswordUrl.EndsWith('/'))
                    {
                        request.ResetPasswordUrl += '/';
                    }

                    var emailParameters =
                        new Dictionary <string, string>()
                    {
                        { "{Name}", user.DisplayName },
                        { "{Url}", request.ResetPasswordUrl + System.Web.HttpUtility.UrlEncode(resetToken) }
                    };

                    await _emailService.ForgotPassword(user.Email, emailParameters);
                }
                catch (Exception)
                {
                    throw new RestException(
                              System.Net.HttpStatusCode.InternalServerError,
                              "Error during forgot password process.");
                }

                return(Unit.Value);
            }