Exemplo n.º 1
0
        protected void protect_Click(object sender, CommandEventArgs e)
        {
            if (string.IsNullOrEmpty(errorPagePicker.Value) || errorPagePicker.Value == "-1")
            {
                cv_errorPage.IsValid = false;
            }

            if (string.IsNullOrEmpty(loginPagePicker.Value) || loginPagePicker.Value == "-1")
            {
                cv_loginPage.IsValid = false;
            }

            //reset
            SimpleLoginNameValidator.IsValid = true;

            var provider = MembershipProviderExtensions.GetMembersMembershipProvider();

            if (Page.IsValid)
            {
                int pageId = int.Parse(helper.Request("nodeId"));

                if (e.CommandName == "simple")
                {
                    var memberLogin = simpleLogin.Visible ? simpleLogin.Text : SimpleLoginLabel.Text;

                    var member = provider.GetUser(memberLogin, false);
                    if (member == null)
                    {
                        var tempEmail = "u" + Guid.NewGuid().ToString("N") + "@example.com";

                        // this needs to work differently depending on umbraco members or external membership provider
                        if (provider.IsUmbracoMembershipProvider() == false)
                        {
                            member = provider.CreateUser(memberLogin, simplePassword.Text, tempEmail);
                        }
                        else
                        {
                            //if it's the umbraco membership provider, then we need to tell it what member type to create it with
                            if (MemberType.GetByAlias(Constants.Conventions.MemberTypes.SystemDefaultProtectType) == null)
                            {
                                MemberType.MakeNew(BusinessLogic.User.GetUser(0), Constants.Conventions.MemberTypes.SystemDefaultProtectType);
                            }
                            var castedProvider = provider.AsUmbracoMembershipProvider();
                            MembershipCreateStatus status;
                            member = castedProvider.CreateUser(Constants.Conventions.MemberTypes.SystemDefaultProtectType,
                                                               memberLogin, simplePassword.Text, tempEmail, null, null, true, null, out status);
                            if (status != MembershipCreateStatus.Success)
                            {
                                SimpleLoginNameValidator.IsValid      = false;
                                SimpleLoginNameValidator.ErrorMessage = "Could not create user: "******"Could not create user: "******"__umbracoRole_" + member.UserName;
                    if (Roles.RoleExists(simpleRoleName) == false)
                    {
                        Roles.CreateRole(simpleRoleName);
                    }
                    if (Roles.IsUserInRole(member.UserName, simpleRoleName) == false)
                    {
                        Roles.AddUserToRole(member.UserName, simpleRoleName);
                    }

                    Access.ProtectPage(true, pageId, int.Parse(loginPagePicker.Value), int.Parse(errorPagePicker.Value));
                    Access.AddMembershipRoleToDocument(pageId, simpleRoleName);
                    Access.AddMembershipUserToDocument(pageId, member.UserName);
                }
                else if (e.CommandName == "advanced")
                {
                    Access.ProtectPage(false, pageId, int.Parse(loginPagePicker.Value), int.Parse(errorPagePicker.Value));

                    foreach (ListItem li in _memberGroups.Items)
                    {
                        if (("," + _memberGroups.Value + ",").IndexOf("," + li.Value + ",", StringComparison.Ordinal) > -1)
                        {
                            Access.AddMembershipRoleToDocument(pageId, li.Value);
                        }
                        else
                        {
                            Access.RemoveMembershipRoleFromDocument(pageId, li.Value);
                        }
                    }
                }

                feedback.Text = ui.Text("publicAccess", "paIsProtected", new cms.businesslogic.CMSNode(pageId).Text) + "</p><p><a href='#' onclick='" + ClientTools.Scripts.CloseModalWindow() + "'>" + ui.Text("closeThisWindow") + "</a>";

                p_buttons.Visible     = false;
                pane_advanced.Visible = false;
                pane_simple.Visible   = false;
                var content = ApplicationContext.Current.Services.ContentService.GetById(pageId);
                //reloads the current node in the tree
                ClientTools.SyncTree(content.Path, true);
                //reloads the current node's children in the tree
                ClientTools.ReloadActionNode(false, true);
                feedback.type = global::umbraco.uicontrols.Feedback.feedbacktype.success;
            }
        }
Exemplo n.º 2
0
        protected void protect_Click(object sender, CommandEventArgs e)
        {
            if (string.IsNullOrEmpty(errorPagePicker.Text))
            {
                cv_errorPage.IsValid = false;
            }

            if (string.IsNullOrEmpty(loginPagePicker.Text))
            {
                cv_loginPage.IsValid = false;
            }


            if (Page.IsValid)
            {
                int pageId = int.Parse(helper.Request("nodeId"));
                p_buttons.Visible     = false;
                pane_advanced.Visible = false;
                pane_simple.Visible   = false;

                if (e.CommandName == "simple")
                {
                    MembershipUser member = Membership.GetUser(simpleLogin.Text);
                    if (member == null)
                    {
                        // this needs to work differently depending on umbraco members or external membership provider
                        if (!cms.businesslogic.member.Member.InUmbracoMemberMode())
                        {
                            member = Membership.CreateUser(simpleLogin.Text, simplePassword.Text);
                        }
                        else
                        {
                            try
                            {
                                if (cms.businesslogic.member.MemberType.GetByAlias("_umbracoSystemDefaultProtectType") == null)
                                {
                                    cms.businesslogic.member.MemberType.MakeNew(BusinessLogic.User.GetUser(0), "_umbracoSystemDefaultProtectType");
                                }
                            }
                            catch
                            {
                                cms.businesslogic.member.MemberType.MakeNew(BusinessLogic.User.GetUser(0), "_umbracoSystemDefaultProtectType");
                            }
                            // create member
                            cms.businesslogic.member.Member mem = cms.businesslogic.member.Member.MakeNew(simpleLogin.Text, "", cms.businesslogic.member.MemberType.GetByAlias("_umbracoSystemDefaultProtectType"), base.getUser());
                            // working around empty password restriction for Umbraco Member Mode
                            mem.Password = simplePassword.Text;
                            member       = Membership.GetUser(simpleLogin.Text);
                        }
                    }

                    // Create or find a memberGroup
                    string simpleRoleName = "__umbracoRole_" + simpleLogin.Text;
                    if (!Roles.RoleExists(simpleRoleName))
                    {
                        Roles.CreateRole(simpleRoleName);
                    }
                    if (!Roles.IsUserInRole(member.UserName, simpleRoleName))
                    {
                        Roles.AddUserToRole(member.UserName, simpleRoleName);
                    }

                    Access.ProtectPage(true, pageId, int.Parse(loginPagePicker.Text), int.Parse(errorPagePicker.Text));
                    Access.AddMembershipRoleToDocument(pageId, simpleRoleName);
                    Access.AddMembershipUserToDocument(pageId, member.UserName);
                }
                else if (e.CommandName == "advanced")
                {
                    cms.businesslogic.web.Access.ProtectPage(false, pageId, int.Parse(loginPagePicker.Text), int.Parse(errorPagePicker.Text));

                    foreach (ListItem li in _memberGroups.Items)
                    {
                        if (("," + _memberGroups.Value + ",").IndexOf("," + li.Value + ",") > -1)
                        {
                            cms.businesslogic.web.Access.AddMembershipRoleToDocument(pageId, li.Value);
                        }
                        else
                        {
                            cms.businesslogic.web.Access.RemoveMembershipRoleFromDocument(pageId, li.Value);
                        }
                    }
                }

                feedback.Text = ui.Text("publicAccess", "paIsProtected", new cms.businesslogic.CMSNode(pageId).Text, null) + "</p><p><a href='#' onclick='" + ClientTools.Scripts.CloseModalWindow() + "'>" + ui.Text("closeThisWindow") + "</a>";

                ClientTools.ReloadActionNode(true, false);

                feedback.type = global::umbraco.uicontrols.Feedback.feedbacktype.success;
            }
        }