public ActionResult ResetPassword(ResetPasswordViewModel userProfile) { string emailAddress; using (var repository = new UserProfileRepository()) { emailAddress = repository.GetEmailForUser(userProfile.Username); //Om email-addressen inte finns i databasen returneras null. if (!string.IsNullOrWhiteSpace(emailAddress)) { string confirmationToken = WebSecurity.GeneratePasswordResetToken(userProfile.Username); //Constructs the email to send. var message = new MailMessage(); message.To.Add(new MailAddress(emailAddress)); message.Subject = "Återställning av lösenord till YH-admin"; message.IsBodyHtml = true; string resetUrl = Url.Action("ResetPasswordConfirmation", "Account", new { id = confirmationToken }, Request.Url.Scheme); message.Body = $"Ditt lösenord på YH-admin kommer att återställas<br/><br/>" + $"Följ denna länk för att återställa ditt lösenord: <br><a href=\"{resetUrl}\">{resetUrl}</a>"; //Sends the mail. using (var smtp = new SmtpClient()) { smtp.Send(message); ViewBag.Email = emailAddress; return View("ResetPasswordEmailSent"); } } //emailaddressen fanns inte i databasen. Då ska inget mail skickas. ModelState.AddModelError("", "Användarnamnet du angav finns inte"); return View(userProfile); } }
public ActionResult SendRegistrationEmail(SendInviteViewModel model) { using (var profileRepository = new UserProfileRepository()) { if (profileRepository.IsEmailInUse(model.Email)) { ModelState.AddModelError(nameof(model.Email), "Denna email används redan av en användare på sidan."); return View(model); } } if (ConfigurationManager.GetSection("system.net/mailSettings/smtp") == null) { throw new ConfigurationErrorsException("Hämta rätt web.config-fil från ftp:n! Den ska innehålla mailSettings."); } var invite = Mapper.Map<InviteModel>(model); invite.Id = Guid.NewGuid(); invite.Status = "Sent"; invite.DateCreated = DateTime.Now; using (var inviteRepository = new InviteRepository()) { inviteRepository.Create(invite); } var registerUrl = Url.Action("Register", "Account", new { guid = invite.Id }, Request.Url.Scheme); var message = new MailMessage(); message.To.Add(new MailAddress(model.Email)); message.Subject = "Inbjudan till YH-Admin"; message.IsBodyHtml = true; //TODO: Make a better looking email message.Body = $"Du har blivit inbjuden till YH-Admin som {invite.Role}.<br/><br/>" + $"Följ denna länk för att slutföra din registrering:<br/><a href=\"{registerUrl}\">{registerUrl}</a>"; message.IsBodyHtml = true; using (var smtp = new SmtpClient()) { smtp.Send(message); return View("Sent"); } }
public ActionResult Register(Guid guid, RegisterViewModel model) { using (var inviteRepository = new InviteRepository()) { InviteModel invite = null; try { invite = inviteRepository.Get(guid); } catch { ModelState.AddModelError(string.Empty, "Kunde inte hitta din inbjudan."); } if (invite.Status != "Sent" || DateTime.Now > invite.DateCreated.AddMonths(1)) ModelState.AddModelError(string.Empty, "Det här är inte en giltig inbjudan."); using (var profileRepository = new UserProfileRepository()) { if (profileRepository.IsEmailInUse(invite.Email)) ModelState.AddModelError(string.Empty, "Denna email är redan i bruk."); } if (ModelState.IsValid) { WebSecurity.CreateUserAndAccount(model.Username, model.Password, new { FirstName = model.FirstName, LastName = model.LastName, Email = invite.Email }); Roles.AddUserToRole(model.Username, invite.Role); WebSecurity.Login(model.Username, model.Password); Session["guid"] = null; invite.Status = "Accepted"; inviteRepository.Update(invite); return View("AccountCreated"); } return View(model); } }