public void ForgotPassword(string resetLinkFormatted, ForgotPasswordModel model)
        {
            var user = Entities.Users.FirstOrDefault(u => u.Email == model.Email);
            if (user == null)
            {
                throw new ArgumentException(Strings.EmailNotExist);
            }

            var data = new Dictionary<string, string>();
            data.Add("link", string.Format(resetLinkFormatted, user.UID));

            var sender = new EmailSender();
            sender.Send(Templates.ResetPassword, user.Email, data);
        }
 public ActionResult ForgotPassword()
 {
     var model = new ForgotPasswordModel();
     return View(model);
 }
        public ActionResult ForgotPassword(ForgotPasswordModel model)
        {
            if (!ModelState.IsValid)
            {
                model.IsValid = false;
                model.ErrorMessage = Strings.FixValidationErrors;
                return View(model);
            }

            try
            {
                var link = HttpUtility.UrlDecode(Url.Action("ResetPassword", "Security", new { uid = "{0}" }, Request.Url.Scheme));
                _security.ForgotPassword(link, model);
            }
            catch (ArgumentException ex)
            {
                model.IsValid = false;
                model.ErrorMessage = ex.Message;
                return View(model);
            }
            catch (Exception)
            {
                model.IsValid = false;
                model.ErrorMessage = Strings.ErrorOccured;
                return View(model);
            }

            return RedirectToAction("Login");
        }