public async Task <IActionResult> Create([Bind("CharacterId,Nickname,Birthdate,UserId")] Character character) { if (ModelState.IsValid) { string username = HttpContext.User.Claims.FirstOrDefault().Value; character.UserId = _context.Users.FirstOrDefaultAsync(u => u.Login == username).Result.UserId; character.CharacterId = _context.Characters.Max(c => c.CharacterId) + 1; character.Birthdate = DateTime.Now; _context.Add(character); await _context.SaveChangesAsync(); return(RedirectToAction(nameof(Index))); } ViewData["UserId"] = new SelectList(_context.Users, "UserId", "Email", character.UserId); return(View(character)); }
public async Task <IActionResult> Create([Bind("Email,Login,PasswordHash")] User user, string confirm_password) { if (ModelState.IsValid) { bool passwordsAreDifferent = (confirm_password != user.PasswordHash); int id = _context.Users.Max(m => m.UserId) + 1; user.PasswordHash = getHashSha256(user.PasswordHash); user.UserId = id; User matchByLogin = await _context.Users.FirstOrDefaultAsync(u => u.Login == user.Login); User matchByEmail = await _context.Users.FirstOrDefaultAsync(u => u.Email == user.Email); if ((matchByLogin != null) || (matchByEmail != null) || (passwordsAreDifferent)) { if (matchByLogin != null) { ModelState.AddModelError("Error", "This login already used. Please enter another"); } if (matchByEmail != null) { ModelState.AddModelError("Error", "This email already used. Please enter another"); } if (passwordsAreDifferent) { ModelState.AddModelError("Error", "Passwords are different. Please try again."); } } else { _context.Add(user); await _context.SaveChangesAsync(); return(RedirectToAction("Login", true)); } } return(View("Register")); //return RedirectToAction(nameof(Register)); }