public async Task <IActionResult> Login(LoginUseCaseRequest loginData) { var validationResult = _loginUseCase.Validate(loginData); if (!validationResult.Success) { foreach (KeyValuePair <string, List <string> > invalidField in validationResult.Result.Errors) { foreach (string error in invalidField.Value) { ModelState.AddModelError(invalidField.Key, error); } } return(View("Login", loginData)); } var loginResult = _loginUseCase.Handle(loginData); if (loginResult.Success) { var claims = new List <Claim> { new Claim(ClaimTypes.Name, loginResult.Result.Id.ToString()) }; var claimsIdentity = new ClaimsIdentity(claims, "CrossTechCookies"); var authProperties = new AuthenticationProperties { IsPersistent = true }; await HttpContext.SignInAsync("CrossTechCookies", new ClaimsPrincipal(claimsIdentity), authProperties); return(RedirectToAction("Index", "Employees")); } else { throw loginResult.Reason; } }