public async Task <IActionResult> Index(LoginInputModel model) { var vm = new LoginViewModel(model); if (ModelState.IsValid) { if (_loginService.ValidateCredentials(model.Username, model.Password)) { if (!_loginService.isUserEnabled(model.Username)) { ModelState.AddModelError("", "User is locked or not enabled yet (check you email)."); } else { #region Get User, Issue Cookie and Redirect to the ReturnUrl (paramter) try { //ToDo: Pending Functionality test var user = _loginService.FindByUsername(model.Username); if (user != null) //ToDo: Validation of roles, _loginService.validateUserRole(user) { await Task.Run(() => IssueCookie(user, "idsvr", "password")); if (model.ReturnUrl != null && _interaction.IsValidReturnUrl(model.ReturnUrl)) { return(Redirect(model.ReturnUrl)); } } } catch (Exception ex) { LogHelper.WriteLog(nameof(LoginController), "User is null"); LogHelper.WriteLog(nameof(LoginController), ex); } #endregion } ModelState.AddModelError("", "You can't login, please contact the administrator."); return(View(vm)); } ModelState.AddModelError("", "Invalid username or password."); } return(View(vm)); }
public async Task <IActionResult> Index(LoginInputModel model) { if (ModelState.IsValid) { if (_loginService.ValidateCredentials(model.Username, model.Password)) { var user = _loginService.FindByUsername(model.Username); await IssueCookie(user, "idsvr", "password"); 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(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)); }