public async Task <IActionResult> Login(LoginViewModel credentials) { var user = _userService.GetByEmail(credentials.Email); if (user != null && Crypto.VerifyHashedPassword(user.PasswordHash, credentials.Password)) { var claims = ClaimsOperator.GenerateClaims(user); var principal = ClaimsOperator.CreatePrincipal(claims); await HttpContext.SignInAsync(principal); return(RedirectToAction("Index", "Home")); } ModelState.AddModelError(nameof(credentials.Password), "Invalid login or password"); return(View(credentials)); }
public async Task <IActionResult> Register(RegisterViewModel model) { if (ModelState.IsValid) { var user = new User { Email = model.Email, Name = model.Name, PasswordHash = model.Password }; _userService.Create(user); var claims = ClaimsOperator.GenerateClaims(user); var principal = ClaimsOperator.CreatePrincipal(claims); await HttpContext.SignInAsync(principal); return(RedirectToAction("EditAllergies")); } return(View(model)); }