Example #1
0
        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)));
            }
        }
Example #2
0
        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);
        }
Example #3
0
        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);
        }
Example #4
0
        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);
        }