public async Task <IActionResult> Register(RegistrerUserViewModel model, [FromServices] ILogger <AccountController> logger)
        {
            if (!ModelState.IsValid)
            {
                logger.LogWarning($"Ошибка модели");
                return(View(model)); // Если данные в форме некоректны, то на доработку
            }

            var new_user = new User         // Создаём нового пользователя
            {
                UserName = model.UserName
            };

            using (logger.BeginScope("Регистрация началась"))
            {
                // Пытаемся зарегистрировать его в системе с указанным паролем
                var creation_result = await _UserManager.CreateAsync(new_user, model.Password);

                if (creation_result.Succeeded)                         // Если получилось
                {
                    await _SignInManager.SignInAsync(new_user, false); // То сразу логиним его на сайте

                    logger.LogInformation($"Пользователь успешно зарегистрирован { model.UserName }");
                    return(RedirectToAction("Index", "Home")); // и отправляем на главную страницу
                }

                foreach (var error in creation_result.Errors)         // Если что-то пошло не так...
                {
                    ModelState.AddModelError("", error.Description);  // Все ошибки заносим в состояние модели
                }
            }

            return(View(model));                                   // И модель отправляем на доработку
        }
Esempio n. 2
0
        public async Task <IActionResult> Register(RegistrerUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model)); // Если данные в форме некоректны, то на доработку
            }
            using (_Logger.BeginScope("Регистрация нового пользователя {0}", model.UserName))
            {
                var new_user = new User         // Создаём нового пользователя
                {
                    UserName = model.UserName
                };
                // Пытаемся зарегистрировать его в системе с указанным паролем
                var creation_result = await _UserManager.CreateAsync(new_user, model.Password);

                if (creation_result.Succeeded)                         // Если получилось
                {
                    await _SignInManager.SignInAsync(new_user, false); // То сразу логиним его на сайте

                    _Logger.LogInformation("Пользователь {0} успешно зарегистрирован в системе", model.UserName);

                    return(RedirectToAction("Index", "Home")); // и отправляем на главную страницу
                }

                foreach (var error in creation_result.Errors)         // Если что-то пошло не так...
                {
                    ModelState.AddModelError("", error.Description);  // Все ошибки заносим в состояние модели
                }
                _Logger.LogWarning("Ошибка при регистарции пользователя {0}: {1}",
                                   model.UserName,
                                   string.Join(", ", creation_result.Errors.Select(error => error.Description)));
            }

            return(View(model));                                   // И модель отправляем на доработку
        }
Esempio n. 3
0
        public async Task <IActionResult> Register(RegistrerUserViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model)); // Если данные в форме некоректны, то на доработку
            }
            var new_user = new User  // Создаём нового пользователя
            {
                UserName = model.UserName
            };
            // Пытаемся зарегистрировать его в системе с указанным паролем
            var creation_result = await _UserManager.CreateAsync(new_user, model.Password);

            if (creation_result.Succeeded)                         // Если получилось
            {
                await _SignInManager.SignInAsync(new_user, false); // То сразу логиним его на сайте

                return(RedirectToAction("Index", "Home"));         // и отправляем на главную страницу
            }

            foreach (var error in creation_result.Errors)         // Если что-то пошло не так...
            {
                ModelState.AddModelError("", error.Description);  // Все ошибки заносим в состояние модели
            }
            return(View(model));                                  // И модель отправляем на доработку
        }