Example #1
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");
            }
        }
Example #2
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);
            }
        }