private ActionResult LoginChallengeImpl() { var localAutoLogonViewData = new LocalAuthLogonViewData(this.CurrentFirmaSession); var localAutoLogonViewModel = new LocalAuthLogonViewModel(); return(RazorView <LocalAuthLogon, LocalAuthLogonViewData, LocalAuthLogonViewModel>(localAutoLogonViewData, localAutoLogonViewModel)); }
public ActionResult LocalAuthLogon(LocalAuthLogonViewModel viewModel) { RequireLocalAuthMode(); SitkaHttpApplication.Logger.Info($"LocalAuthenticationController - LocalAuthLogon() - AuthType:{FirmaWebConfiguration.AuthenticationType}"); DateTime currentDateTime = DateTime.Now; var personLoginAccount = ProjectFirmaModels.SecurityUtil.UserAuthentication.Validate(HttpRequestStorage.DatabaseEntities, viewModel.UserName, viewModel.Password, this.CurrentTenant.TenantID); if (personLoginAccount == null) { string invalidLoginGenericMessage = $"Bad user name or password"; SetErrorForDisplay(invalidLoginGenericMessage); return(new RedirectResult(SitkaRoute <LocalAuthenticationController> .BuildUrlFromExpression(c => c.LocalAuthLogon()))); } // PersonLoginAccount may have changed (for example, login count may have incremented) // But since we have no current Person, we need to use the "No Audit" SaveChanges function. HttpRequestStorage.DatabaseEntities.SaveChangesWithNoAuditing(CurrentFirmaSession.TenantID); FirmaOwinStartup.MakeFirmaSessionForPersonLoggingIn(personLoginAccount.Person, currentDateTime); var claims = new List <Claim>(); claims.Add(new Claim(ClaimTypes.Name, HttpRequestStorage.FirmaSession.FirmaSessionGuid.ToString())); var id = new ClaimsIdentity(claims, FirmaOwinStartup.CookieAuthenticationType); var ctx = Request.GetOwinContext(); var authenticationManager = ctx.Authentication; authenticationManager.SignIn(id); SitkaHttpApplication.Logger.Info($"LocalAuthenticationController - Logged In PersonID:{personLoginAccount.PersonID}, email:{personLoginAccount.Person.Email}"); // Just show home page for now.. return(new RedirectResult(SitkaRoute <HomeController> .BuildUrlFromExpression(c => c.Index()))); }