public void ResetPassword(int userId, Guid passwordResetToken, string newPassword)
        {
            var membership = MembershipBiz.ReadSingleOrDefault(m => m.Id == userId && m.PasswordResetToken == passwordResetToken);

            if (membership == null)
            {
                throw new BusinessException("InvalidPasswordLink");
            }

            membership.Password = newPassword.ComputeSha256Hash();
            membership.LastPasswordChangedDate = DateTime.Now;
            membership.PasswordResetToken      = null; // Invalidate Password Reset Token
            UnitOfWork.SaveChanges();
        }
        public void ActivateAccount(int userId, Guid verificationCode)
        {
            var membership = MembershipBiz.ReadSingleOrDefault(m => m.Id == userId && m.VerificationCode == verificationCode);

            if (membership == null || membership.IsApproved)
            {
                throw new BusinessException("InvalidAccountActivationInfo".Localize());
            }
            if (membership.VerificationCodeSendDate < DateTime.Now.AddDays(-7))
            {
                throw new BusinessException("AccountActivationLinkHasExpired".Localize());
            }
            membership.IsApproved = true;
            UnitOfWork.SaveChanges();
        }