public IHttpActionResult Login(AuthenticateRequest request)
        {
            var username = request?.Username;
            var password = request?.Password;

            if (string.IsNullOrWhiteSpace(username) || string.IsNullOrWhiteSpace(password))
            {
                return(Ok(new
                {
                    success = false
                }));
            }

            var result      = AuthenticateWebUser.Authenticate(request.Username, request.Password, request.Persist);
            var redirectUrl = string.Empty;

            if (result.State == AuthenticateUserResultState.TemporaryPassword)
            {
                var userResetPassword = GenerateUserResetPassword.Generate(result.User);

                if (userResetPassword != null)
                {
                    redirectUrl = UserResetPasswordUrlFactory.Create(userResetPassword);
                }
            }

            return(Ok(new
            {
                success = result.Success,
                redirectUrl = redirectUrl
            }));
        }
        public IWebGenerateUserResetPasswordResult Generate(string email)
        {
            var user = FindUser.Find(email);

            if (user == null)
            {
                return(CreateResult(WebGenerateUserResetPasswordStatus.UserNotFound));
            }

            var userResetPassword = GenerateUserResetPassword.Generate(user);

            if (userResetPassword == null)
            {
                return(CreateResult(WebGenerateUserResetPasswordStatus.Failure));
            }

            Actions.Process(userResetPassword);

            var result = CreateResult(WebGenerateUserResetPasswordStatus.Success);

            result.Token = userResetPassword.Token;

            return(result);
        }