Example #1
0
        private StringBuilder CreateMessageBody(AccUserModel user, string ipAddress)
        {
            if (!(user.UserName.ToLower() == "Demo".ToLower()))
            {
                return(ExistingUser(ipAddress, user));
            }

            return(DemoUser(ipAddress));
        }
Example #2
0
        public async Task <ActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                var userToAdd = new AccUserModel()
                {
                    UserName = model.Login,
                    Email    = model.Email,
                };
                var validMail = await UserManager.UserValidator.ValidateAsync(userToAdd);

                if (!validMail.Succeeded)
                {
                    AddModelErrors(validMail);
                }
                var validPass = await UserManager.PasswordValidator.ValidateAsync(model.Password);

                if (!validPass.Succeeded)
                {
                    AddModelErrors(validPass);
                }
                if (!model.Password.Equals(model.ConfirmPassword))
                {
                    ModelState.AddModelError("", "Введенные пароли не совпадают");
                }
                if (validPass.Succeeded && validMail.Succeeded && model.Password.Equals(model.ConfirmPassword))
                {
                    userToAdd.PasswordHash = UserManager.PasswordHasher.HashPassword(model.Password);
                    var result = await UserManager.CreateAsync(userToAdd);

                    if (!result.Succeeded)
                    {
                        AddModelErrors(result);
                    }
                    result = await UserManager.AddToRoleAsync(userToAdd.Id, "Users");

                    if (!result.Succeeded)
                    {
                        AddModelErrors(result);
                    }
                    else
                    {
                        var address = HttpContext.Request.UserHostAddress;
                        new Thread(() => _userReporter.Report(userToAdd, address)).Start();
                        TempData["message"] = "Спасибо за регистрацию. Теперь можно войти в систему со своим логином и паролем";
                        return(Redirect("/"));
                    }
                }
            }
            else
            {
                return(View(model));
            }
            return(View(model));
        }
Example #3
0
        private StringBuilder ExistingUser(string address, AccUserModel user)
        {
            var messageBody = new StringBuilder();

            messageBody.AppendLine("Зарегистрировался новый пользователь");
            messageBody.AppendLine("Логин: " + user.UserName);
            messageBody.AppendLine("Email: " + user.Email);
            messageBody.AppendLine("IP: " + address);
            messageBody.AppendLine("Дата регистрации: " + DateTime.Now);

            return(messageBody);
        }
Example #4
0
        private async Task SignInUser(AccUserModel user)
        {
            var identity = await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

            AuthManager.SignOut();
            AuthManager.SignIn(new AuthenticationProperties()
            {
                IsPersistent = true
            }, identity);

            Session["WebUser"] = new WebUser()
            {
                Id = user.Id, Name = user.UserName, Email = user.Email
            };
        }
Example #5
0
        public async Task <ActionResult> Create(CreateModel model)
        {
            if (ModelState.IsValid)
            {
                var user = new AccUserModel()
                {
                    Email = model.Email, UserName = model.Name
                };
                IdentityResult result = await UserManager.CreateAsync(user, model.Password);

                if (result.Succeeded)
                {
                    return(RedirectToAction("Index"));
                }

                AddModelErrors(result);
            }
            return(PartialView("_Create", model));
        }
Example #6
0
 private async void ActualizePlanItems(AccUserModel user)
 {
     try
     {
         await _planingHelper.ActualizePlanItems(user.Id);
     }
     catch (WebUiHelperException e)
     {
         throw new WebUiException(
                   $"Ошибка в контроллере {nameof(UserAccountController)} в методе {nameof(ActualizePlanItems)}",
                   e);
     }
     catch (Exception e)
     {
         throw new WebUiException(
                   $"Ошибка в контроллере {nameof(UserAccountController)} в методе {nameof(ActualizePlanItems)}",
                   e);
     }
 }
        public async Task Report(AccUserModel user, string address)
        {
            StringBuilder messageBody = new StringBuilder();

            if (user.UserName.ToLower() == "Demo".ToLower())
            {
                DemoUser(messageBody, address);
                await Task.Run(() => { Logger.Warn(messageBody.ToString); });
            }
            else
            {
                messageBody.AppendLine("Зарегистрировался новый пользователь");
                messageBody.AppendLine("Логин: " + user.UserName);
                messageBody.AppendLine("Email: " + user.Email);
                messageBody.AppendLine("IP: " + address);
                messageBody.AppendLine("Дата регистрации: " + DateTime.Now);
                await Task.Run(() => { Logger.Warn(messageBody.ToString); });
            }
        }
Example #8
0
        public async Task <ActionResult> Login(LoginModel model, string returnUrl)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    AccUserModel user = await UserManager.FindAsync(model.Name, model.Password);

                    if (user != null)
                    {
                        ClaimsIdentity identity =
                            await UserManager.CreateIdentityAsync(user, DefaultAuthenticationTypes.ApplicationCookie);

                        AuthManager.SignOut();
                        AuthManager.SignIn(new AuthenticationProperties()
                        {
                            IsPersistent = false
                        }, identity);
                        if (user.UserName == "demo")
                        {
                            var address = HttpContext.Request.UserHostAddress;
                            new Thread(() => _userReporter.Report(user, address)).Start();
                        }
                        //new Thread(() => ActualizePlanItems(user)).Start(); Отключил пока не починю планирование

                        Session["WebUser"] = new WebUser()
                        {
                            Id = user.Id, Name = user.UserName, Email = user.Email
                        };

                        return(Json(new { url = returnUrl, hasErrors = "false" }, JsonRequestBehavior.AllowGet));
                    }
                    ModelState.AddModelError("", "Неверные имя пользователя или пароль");
                }
                catch (Exception ex)
                {
                    throw new WebUiException("Невозможно подключиться к базе авторизации", ex);
                }
            }
            ViewBag.returnUrl = returnUrl;
            return(PartialView("_Login", model));
        }
Example #9
0
        public async Task <ActionResult> Register(RegisterModel model)
        {
            if (ModelState.IsValid)
            {
                var userToAdd = new AccUserModel()
                {
                    UserName = model.Login,
                    Email    = model.Email,
                };
                var validMail = await UserManager.UserValidator.ValidateAsync(userToAdd);

                if (!validMail.Succeeded)
                {
                    AddModelErrors(validMail);
                }

                var validPass = await UserManager.PasswordValidator.ValidateAsync(model.Password);

                if (!validPass.Succeeded)
                {
                    AddModelErrors(validPass);
                }

                if (!model.Password.Equals(model.ConfirmPassword))
                {
                    ModelState.AddModelError("", "Введенные пароли не совпадают");
                }

                if (validPass.Succeeded && validMail.Succeeded && model.Password.Equals(model.ConfirmPassword))
                {
                    userToAdd.PasswordHash = UserManager.PasswordHasher.HashPassword(model.Password);
                    var result = await UserManager.CreateAsync(userToAdd);

                    if (!result.Succeeded)
                    {
                        AddModelErrors(result);
                    }

                    result = await UserManager.AddToRoleAsync(userToAdd.Id, "Users");

                    if (!result.Succeeded)
                    {
                        AddModelErrors(result);
                    }
                    else
                    {
                        var address = HttpContext.Request.UserHostAddress;
                        await _userReporter.Log(userToAdd, address);

                        await SignInUser(userToAdd);

                        var urlToRedirect = Url.Action("Index", "PayingItem");
                        return(Json(new { url = urlToRedirect, hasErrors = "false" }, JsonRequestBehavior.AllowGet));
                    }
                }
            }
            else
            {
                return(PartialView("_Register", model));
            }

            return(PartialView("_Register", model));
        }
Example #10
0
        public async Task Log(AccUserModel user, string ipAddress)
        {
            var messageBody = CreateMessageBody(user, ipAddress);

            await Task.Run(() => Logger.Info(messageBody.ToString));
        }