Example #1
0
        public IActionResult Registration(Models.RegistrationModel model)
        {
            //Проверка правильности переданной модели
            if (ModelState.IsValid)
            {
                //проверка эл. ящика
                if (!NameValidation.ValidateEmail(model.Email))
                {
                    ModelState.AddModelError("", "Введённый почтовый адрес не прошёл валидацию.");
                    return(RedirectToAction("Registration", model));
                }
                //добавление пользователя в бд
                db.Users.Add(new Data.User()
                {
                    Email    = NameValidation.idn.GetAscii(model.Email),
                    Login    = Utils.GetHash(model.Email),
                    Password = Utils.GetHash(model.Password),
                    Person   = new Person()
                    {
                        DateOfBirth = DateTime.Now,
                        FirstName   = "Тест",
                        LastName    = "Кейсов",
                        Patronymic  = "Тестович"
                    },
                    Role       = Roles.Ученик,
                    UniqueCode = new UniqueKey()
                    {
                        UniqueKeyString = Utils.GetHash(DateTime.Now.ToShortTimeString())
                    }
                });
                db.SaveChanges();
                //отправка письма
                MailAddress from = new MailAddress("unnamed2@тестовая-зона.рф");
                MailAddress to   = new MailAddress(model.Email);

                MailMessage message = new MailMessage(from, to);
                message.Subject    = "Благодарим за регистрацию на сайте ИТ-Дневник!" + DateTime.Now;
                message.Body       = $"Вы зарегистрировались по уникальному ключу {model.UniqueKey}";
                message.IsBodyHtml = true;
                //настройка smtp-клиента
                SmtpClient smtp = new SmtpClient("smtp.gmail.com", 587);
                //пока что используется аккаунт почты гугла
                smtp.Credentials    = new NetworkCredential("*****@*****.**", "bfd20380a6");
                smtp.EnableSsl      = true;
                smtp.DeliveryMethod = SmtpDeliveryMethod.Network;
                smtp.Send(message);
                //вход под пользователем
                Authenticate(model.Email, model.Password);
                return(RedirectToAction("Index"));
            }
            return(RedirectToAction("Registration", model));
        }