public async Task <IActionResult> Register(RegisterViewModel model) { if (model?.Code == null || !AuthCodes.Contains(model.Code)) { ModelState.AddModelError("", "Недействительная ссылка регистрации"); return(View(model)); } if (UserRepository.GetAll().Any(u => u.Username.ToLower() == model.Login.ToLower())) { ModelState.AddModelError("", "Имя пользователя занято"); } if (model.Password != model.ConfirmPassword) { ModelState.AddModelError("", "Пароли не совпадают"); } if (!ModelState.IsValid) { return(View(model)); } User user = new User //Создание пользователя { Username = model.Login, FirstName = "Имя", SecondName = "Фамилия", ThirdName = "Отчество", PasswordHash = HashingProvider.Hash(model.Password) }; var role = await RoleRepository.GetAll().FirstAsync(r => r.Name == "Пользователь"); user.Roles.Add(role); lock (AuthCodes) //После создания пользователя удаляем одноразовый код { AuthCodes.Remove(model.Code); } await UserRepository.Add(user); string token = await AuthenticationProvider.LoginAsync(model.Login, model.Password, TimeSpan.FromMinutes(30)); //Добавляем пользователя в хранилище и генерируем ему токен доступа HttpContext.Response.Cookies.Append("auth_token", token); return(RedirectToAction("Index", "Items")); }
public IActionResult Register(string code) { if (code == null || !AuthCodes.Contains(code)) { return(Content("Недействительная ссылка")); } var vm = new RegisterViewModel { Code = code }; return(View(vm)); }