Пример #1
0
        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);
            }
        }
Пример #2
0
        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");
            }
        }
Пример #3
0
        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);
            }
        }