コード例 #1
0
        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;
            }
        }