public async Task<IActionResult> Index(LoginInputModel model) { if (ModelState.IsValid) { if (_loginService.ValidateCredentials(model.Username, model.Password)) { var user = _loginService.FindByUsername(model.Username); var name = user.Claims.Where(x => x.Type == Constants.ClaimTypes.Name).Select(x => x.Value).FirstOrDefault() ?? user.Username; var claims = new Claim[] { new Claim(Constants.ClaimTypes.Subject, user.Subject), new Claim(Constants.ClaimTypes.Name, name), new Claim(Constants.ClaimTypes.IdentityProvider, "idsvr"), new Claim(Constants.ClaimTypes.AuthenticationTime, DateTime.UtcNow.ToEpochTime().ToString()), }; var ci = new ClaimsIdentity(claims, "password", Constants.ClaimTypes.Name, Constants.ClaimTypes.Role); var cp = new ClaimsPrincipal(ci); await HttpContext.Authentication.SignInAsync(Constants.PrimaryAuthenticationType, cp); if (model.SignInId != null) { return new SignInResult(model.SignInId); } return Redirect("~/"); } ModelState.AddModelError("", "Invalid username or password."); } var vm = new LoginViewModel(model); return View(vm); }
public async Task<IActionResult> Index(string id) { var vm = new LoginViewModel(); if (id != null) { var request = await _signInInteraction.GetRequestAsync(id); if (request != null) { vm.Username = request.LoginHint; vm.SignInId = id; } } return View(vm); }