public async Task <ActionResult> Login(LoginViewModel model, string returnUrl, string invitationCode) { if (!ModelState.IsValid || (ViewBag.Settings.LocalLoginByEmail && string.IsNullOrWhiteSpace(model.Email)) || (!ViewBag.Settings.LocalLoginByEmail && string.IsNullOrWhiteSpace(model.Username))) { //AddErrors(ViewBag.IdentityErrors.InvalidLogin()); AddErrors(new IdentityError() { Description = " Invalid sign-in attempt. Please enter the correct user access credentials." }); return(View(GetLoginViewModel(model, null, returnUrl, invitationCode))); } var rememberMe = ViewBag.Settings.RememberMeEnabled && model.RememberMe; BranchSettingsViewModel userBranchConfiguration = UserBranchConfiguration(model.Username); if (userBranchConfiguration.BranchName != string.Empty && !userBranchConfiguration.IsBranchConfigured) { AddErrors(new IdentityError() { Description = " Your branch has not been configured. Please contact your system administrator to fix this." }); return(View(GetLoginViewModel(model, null, returnUrl, invitationCode))); } setUserBranchCookie(userBranchConfiguration); // This doen't count login failures towards lockout only two factor authentication // To enable password failures to trigger lockout, change to shouldLockout: true SignInStatus result = ViewBag.Settings.LocalLoginByEmail ? await SignInManager.PasswordSignInByEmailAsync(model.Email, model.Password, rememberMe, ViewBag.Settings.TriggerLockoutOnFailedPassword) : await SignInManager.PasswordSignInAsync(model.Username, model.Password, rememberMe, ViewBag.Settings.TriggerLockoutOnFailedPassword); switch (result) { case SignInStatus.Success: return(await RedirectOnPostAuthenticate(returnUrl, invitationCode)); case SignInStatus.LockedOut: AddErrors(ViewBag.IdentityErrors.UserLocked()); return(View(GetLoginViewModel(model, null, returnUrl, invitationCode))); case SignInStatus.RequiresVerification: return(RedirectToAction("SendCode", new { ReturnUrl = returnUrl, InvitationCode = invitationCode, RememberMe = rememberMe })); case SignInStatus.Failure: default: AddErrors(new IdentityError() { Description = " Invalid sign-in attempt. Please enter the correct user access credentials." }); //AddErrors(ViewBag.IdentityErrors.InvalidLogin()); return(View(GetLoginViewModel(model, null, returnUrl, invitationCode))); } }
private BranchSettingsViewModel UserBranchConfiguration(string username) { XrmConnection _conn = new XrmConnection(); var service = new Site.Areas.DMS_Api.XrmWebService.UserManager(_conn); BranchSettingsViewModel userBranchVM = service.GetUserBranch(username); if (ConfigurationManager.ConnectionStrings[userBranchVM.BranchName] == null) { userBranchVM.IsBranchConfigured = false; return(userBranchVM); } userBranchVM.IsBranchConfigured = true; return(userBranchVM); }
private void setUserBranchCookie(BranchSettingsViewModel branchSettings) { HttpCookie userCookieCredentials = new HttpCookie("Branch"); userCookieCredentials["branch"] = branchSettings.BranchName; userCookieCredentials["branchId"] = branchSettings.BranchId.ToString(); userCookieCredentials["dealer"] = branchSettings.DealerName; userCookieCredentials["dealerid"] = branchSettings.DealerId.ToString(); userCookieCredentials["allowDraftPrinting"] = branchSettings.AllowDraftPrinting.ToString(); userCookieCredentials["usertoActivate"] = branchSettings.AllowUsertoActivate.ToString(); userCookieCredentials["managertoActivate"] = branchSettings.AllowManagertoActivate.ToString(); userCookieCredentials["branchtoActivate"] = branchSettings.AllowSupervisortoActivate.ToString(); userCookieCredentials["userReportsTo"] = branchSettings.ReportsTo.ToString(); userCookieCredentials["positionId"] = branchSettings.Position.Id.ToString(); userCookieCredentials["positionName"] = branchSettings.Position.Name; userCookieCredentials["webRoleId"] = branchSettings.WebRole.Id.ToString(); userCookieCredentials["webRoleName"] = branchSettings.WebRole.Name; userCookieCredentials["userId"] = branchSettings.UserId.ToString(); userCookieCredentials["parentCustomerId"] = branchSettings.ParentCustomerId.ToString(); userCookieCredentials["parentCustomerType"] = branchSettings.ParentCustomerType; HttpContext.Response.Cookies.Add(userCookieCredentials); }
public BranchSettingsViewModel GetUserBranch(string username) { BranchSettingsViewModel branchSettings = new BranchSettingsViewModel() { Position = new UserPosition() }; QueryExpression query = new QueryExpression("account"); query.ColumnSet.AddColumns("gsc_allowdraftprinting", "gsc_owningusertoactivatequote", "gsc_managerstoactivatequote", "gsc_supervisorstoactivatequote"); query.LinkEntities.Add(new LinkEntity("account", "contact", "accountid", "gsc_contactbranchid", JoinOperator.Inner)); query.LinkEntities[0].Columns.AddColumns("gsc_contactbranchid", "gsc_contactdealerid", "gsc_reportsto", "gsc_positionid", "parentcustomerid"); query.LinkEntities[0].LinkCriteria.AddCondition("adx_identity_username", ConditionOperator.Equal, username); query.LinkEntities[0].EntityAlias = "Contact"; Entity entity = _service.ServiceContext.RetrieveMultiple(query).Entities.FirstOrDefault(); QueryExpression queryParentCustomer = new QueryExpression("account"); queryParentCustomer.ColumnSet.AddColumns("gsc_recordtype"); queryParentCustomer.LinkEntities.Add(new LinkEntity("account", "contact", "accountid", "parentcustomerid", JoinOperator.Inner)); queryParentCustomer.LinkEntities[0].Columns.AddColumns("parentcustomerid"); queryParentCustomer.LinkEntities[0].LinkCriteria.AddCondition("adx_identity_username", ConditionOperator.Equal, username); queryParentCustomer.LinkEntities[0].EntityAlias = "Contact"; Entity entityParentCustomer = _service.ServiceContext.RetrieveMultiple(queryParentCustomer).Entities.FirstOrDefault(); //Retrieve Web Roles Associated to Contact QueryExpression queryWebRole = new QueryExpression("adx_webrole_contact"); queryWebRole.ColumnSet.AddColumns("adx_webroleid"); queryWebRole.LinkEntities.Add(new LinkEntity("adx_webrole_contact", "contact", "contactid", "contactid", JoinOperator.Inner)); queryWebRole.LinkEntities[0].LinkCriteria.AddCondition("adx_identity_username", ConditionOperator.Equal, username); queryWebRole.LinkEntities[0].Columns.AddColumns("contactid"); queryWebRole.LinkEntities[0].EntityAlias = "Contact"; queryWebRole.LinkEntities.Add(new LinkEntity("adx_webrole_contact", "adx_webrole", "adx_webroleid", "adx_webroleid", JoinOperator.Inner)); queryWebRole.LinkEntities[1].Columns.AddColumns("adx_name"); queryWebRole.LinkEntities[1].EntityAlias = "WebRole"; EntityCollection webRolesCollection = _service.ServiceContext.RetrieveMultiple(queryWebRole); if (entity != null) { Entity webRole = webRolesCollection.Entities[0]; var branch = entity.GetAttributeValue <AliasedValue>("Contact.gsc_contactbranchid") != null ? (EntityReference)entity.GetAttributeValue <AliasedValue>("Contact.gsc_contactbranchid").Value : null; var dealer = entity.GetAttributeValue <AliasedValue>("Contact.gsc_contactdealerid") != null ? (EntityReference)entity.GetAttributeValue <AliasedValue>("Contact.gsc_contactdealerid").Value : null; var position = entity.GetAttributeValue <AliasedValue>("Contact.gsc_positionid") != null ? (EntityReference)entity.GetAttributeValue <AliasedValue>("Contact.gsc_positionid").Value : null; var parentCustomerId = entityParentCustomer.GetAttributeValue <AliasedValue>("Contact.parentcustomerid") != null ? ((EntityReference)entity.GetAttributeValue <AliasedValue>("Contact.parentcustomerid").Value).Id : Guid.Empty; var parentCustomerType = entityParentCustomer.Contains("gsc_recordtype") ? entityParentCustomer.GetAttributeValue <OptionSetValue>("gsc_recordtype").Value.ToString() : String.Empty; if (branch != null) { branchSettings.WebRole = new UserWebRole() { Id = webRole.GetAttributeValue <Guid>("adx_webroleid"), Name = webRole.GetAttributeValue <AliasedValue>("WebRole.adx_name").Value.ToString() }; branchSettings.BranchName = branch.Name; branchSettings.BranchId = branch.Id; branchSettings.DealerName = dealer.Name; branchSettings.DealerId = dealer.Id; branchSettings.ParentCustomerId = parentCustomerId; branchSettings.ParentCustomerType = parentCustomerType; if (position != null) { branchSettings.Position.Id = position.Id; branchSettings.Position.Name = position.Name; } branchSettings.ReportsTo = entity.GetAttributeValue <AliasedValue>("Contact.gsc_reportsto") != null ? ((EntityReference)entity.GetAttributeValue <AliasedValue>("Contact.gsc_reportsto").Value).Id : Guid.Empty; branchSettings.AllowDraftPrinting = entity.Contains("gsc_allowdraftprinting") ? entity.GetAttributeValue <Boolean>("gsc_allowdraftprinting") : false; branchSettings.AllowUsertoActivate = entity.Contains("gsc_owningusertoactivatequote") ? entity.GetAttributeValue <Boolean>("gsc_owningusertoactivatequote") : false; branchSettings.AllowSupervisortoActivate = entity.Contains("gsc_supervisorstoactivatequote") ? entity.GetAttributeValue <Boolean>("gsc_supervisorstoactivatequote") : false; branchSettings.AllowManagertoActivate = entity.Contains("gsc_managerstoactivatequote") ? entity.GetAttributeValue <Boolean>("gsc_managerstoactivatequote") : false; branchSettings.UserId = webRole.GetAttributeValue <AliasedValue>("Contact.contactid") != null ? (Guid)webRole.GetAttributeValue <AliasedValue>("Contact.contactid").Value : Guid.Empty; } // user exists but branch is empty } return(branchSettings); }