Example #1
0
        public static RolePermissionsCollection GetRolePermissions()
        {
            if (rolePermissions == null)
            {
                rolePermissions = RolePermissionsCollection.FetchAll();

                #region This block will only run the first time this method is called to insert the everyone/manager/contributor roles

                // check for and insert the everyone role
                RolePermissions temp = rolePermissions.Find(
                    delegate(RolePermissions rp)
                {
                    return(rp.RoleName == GraffitiUsers.EveryoneRole);
                });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.EveryoneRole, true, false, false);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                // check for and insert the manager role
                temp = rolePermissions.Find(
                    delegate(RolePermissions rp)
                {
                    return(rp.RoleName == GraffitiUsers.ManagerRole);
                });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.ManagerRole, true, true, true);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                // check for and insert the comtributor role
                temp = rolePermissions.Find(
                    delegate(RolePermissions rp)
                {
                    return(rp.RoleName == GraffitiUsers.ContributorRole);
                });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.ContributorRole, true, true, false);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                #endregion
            }

            return(rolePermissions);
        }
Example #2
0
        public static bool IsEveryoneAContentPublisher()
        {
            RolePermissionsCollection rpc = GetRolePermissions();

            foreach (RolePermissions rp in rpc)
            {
                if (rp.RoleName == GraffitiUsers.EveryoneRole)
                {
                    if (rp.HasEdit || rp.HasPublish)
                    {
                        return(true);
                    }
                }
            }

            return(false);
        }
Example #3
0
        public static void DeleteRole(string roleName)
        {
            // Remove users from role
            List <IGraffitiUser> roleUsers = GraffitiUsers.GetUsers(roleName);

            if (roleUsers != null && roleUsers.Count > 0)
            {
                foreach (IGraffitiUser user in roleUsers)
                {
                    GraffitiUsers.RemoveUserFromRole(user.Name, roleName);
                }
            }

            RolePermissionsCollection         rp  = RolePermissionManager.GetRolePermissions();
            RoleCategoryPermissionsCollection rpc = RolePermissionManager.GetRoleCategoryPermissions();

            foreach (RolePermissions rperm in rp)
            {
                if (String.Compare(rperm.RoleName, roleName, StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    RolePermissions.Destroy(RolePermissions.Columns.RoleName, rperm.RoleName);
                    break;
                }
            }

            foreach (RoleCategoryPermissions rcatperm in rpc)
            {
                if (String.Compare(rcatperm.RoleName, roleName, StringComparison.InvariantCultureIgnoreCase) == 0)
                {
                    RoleCategoryPermissions.Destroy(RolePermissions.Columns.RoleName, rcatperm.RoleName);
                    break;
                }
            }

            RolePermissionManager.MarkDirty();

            // Remove role from other membership databases
            controller.DeleteRole(roleName);
        }
Example #4
0
    protected void Page_Load(object sender, EventArgs e)
    {
        LiHyperLink.SetNameToCompare(Context, "UserManagement");

        string role = DecodeFromQS("role");

        if (!Page.IsPostBack)
        {
            SetupTogglePermissionsScript(read, edit, publish, read, "read");
            SetupTogglePermissionsScript(read, edit, publish, edit, "edit");
            SetupTogglePermissionsScript(read, edit, publish, publish, "publish");

            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, readRolePermission, "read");
            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, editRolePermission, "edit");
            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, publishRolePermission, "publish");

            if (!String.IsNullOrEmpty(role))
            {
                RolePermissionsCollection rpc = RolePermissionManager.GetRolePermissions();

                RolePermissions rp = rpc.Find(
                                                     delegate(RolePermissions rper)
                                                     {
                                                         return rper.RoleName.ToLower() == role.ToLower();
                                                     });

                if (rp != null)
                {
                    readRolePermission.Checked = rp.HasRead;
                    editRolePermission.Checked = rp.HasEdit;
                    publishRolePermission.Checked = rp.HasPublish;
                }
            }
        }

        if (role != null)
        {
            string encodedRoleName = HttpUtility.HtmlEncode(role);

            if (!IsPostBack)
            {
                if (Request.QueryString["new"] != null)
                {
                    Message.Text = string.Format("The role <strong>{0}</strong> was created.", encodedRoleName);
                    Message.Type = StatusType.Success;
                }

                litExistingRoleName.Text = encodedRoleName;
                PageText.Text = "Update " + encodedRoleName;

                CategoryList.DataSource = new CategoryController().GetAllCachedCategories();
                CategoryList.DataBind();
            }

            new_role_container.Visible = false;
            Role_List.Visible = false;
            role_edit_form.Visible = true;
        }
        else
        {
            if (!Page.IsPostBack)
            {
                RolePermissionsCollection rps = RolePermissionManager.GetRolePermissions();

                rps.Sort(delegate(RolePermissions rp1, RolePermissions rp2)
                {
                    return Comparer<string>.Default.Compare(rp1.RoleName, rp2.RoleName);
                });

                // move everyone to the top
                RolePermissionsCollection rpss = new RolePermissionsCollection();

                foreach (RolePermissions rp in rps)
                {
                    if (rp.RoleName == GraffitiUsers.EveryoneRole)
                        rpss.Insert(0, rp);
                }

                foreach (RolePermissions rp in rps)
                {
                    if (rp.RoleName != GraffitiUsers.EveryoneRole)
                        rpss.Add(rp);
                }

                Role_List.DataSource = rpss;
                Role_List.DataBind();

                if (Request.QueryString["roleSaved"] != null)
                {
                    string roleSaved = HttpUtility.UrlDecode(Request.QueryString["roleSaved"]);
                    Message.Text = string.Format("The role <strong>{0}</strong> was updated.", roleSaved);
                    Message.Type = StatusType.Success;
                }
            }

            new_role_container.Visible = true;
            role_edit_form.Visible = false;
            Role_List.Visible = true;
        }
    }
 public static void MarkDirty()
 {
     rolePermissions = null;
     roleCategoryPermissions = null;
 }
        public static RolePermissionsCollection GetRolePermissions()
        {
            if (rolePermissions == null)
            {
                rolePermissions = RolePermissionsCollection.FetchAll();

                #region This block will only run the first time this method is called to insert the everyone/manager/contributor roles

                // check for and insert the everyone role
                RolePermissions temp = rolePermissions.Find(
                                            delegate(RolePermissions rp)
                                            {
                                                return rp.RoleName == GraffitiUsers.EveryoneRole;
                                            });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.EveryoneRole, true, false, false);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                // check for and insert the manager role
                temp = rolePermissions.Find(
                                            delegate(RolePermissions rp)
                                            {
                                                return rp.RoleName == GraffitiUsers.ManagerRole;
                                            });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.ManagerRole, true, true, true);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                // check for and insert the comtributor role
                temp = rolePermissions.Find(
                                            delegate(RolePermissions rp)
                                            {
                                                return rp.RoleName == GraffitiUsers.ContributorRole;
                                            });

                if (temp == null)
                {
                    GraffitiUsers.AddUpdateRole(GraffitiUsers.ContributorRole, true, true, false);
                    rolePermissions = RolePermissionsCollection.FetchAll();
                }

                #endregion
            }

            return rolePermissions;
        }
Example #7
0
    protected void Page_Load(object sender, EventArgs e)
    {
        LiHyperLink.SetNameToCompare(Context, "UserManagement");

        string role = DecodeFromQS("role");

        if (!Page.IsPostBack)
        {
            SetupTogglePermissionsScript(read, edit, publish, read, "read");
            SetupTogglePermissionsScript(read, edit, publish, edit, "edit");
            SetupTogglePermissionsScript(read, edit, publish, publish, "publish");

            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, readRolePermission, "read");
            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, editRolePermission, "edit");
            SetupTogglePermissionsScript(readRolePermission, editRolePermission, publishRolePermission, publishRolePermission, "publish");

            if (!String.IsNullOrEmpty(role))
            {
                RolePermissionsCollection rpc = RolePermissionManager.GetRolePermissions();

                RolePermissions rp = rpc.Find(
                    delegate(RolePermissions rper)
                {
                    return(rper.RoleName.ToLower() == role.ToLower());
                });

                if (rp != null)
                {
                    readRolePermission.Checked    = rp.HasRead;
                    editRolePermission.Checked    = rp.HasEdit;
                    publishRolePermission.Checked = rp.HasPublish;
                }
            }
        }

        if (role != null)
        {
            string encodedRoleName = HttpUtility.HtmlEncode(role);

            if (!IsPostBack)
            {
                if (Request.QueryString["new"] != null)
                {
                    Message.Text = string.Format("The role <strong>{0}</strong> was created.", encodedRoleName);
                    Message.Type = StatusType.Success;
                }

                litExistingRoleName.Text = encodedRoleName;
                PageText.Text            = "Update " + encodedRoleName;

                CategoryList.DataSource = new CategoryController().GetAllCachedCategories();
                CategoryList.DataBind();
            }

            new_role_container.Visible = false;
            Role_List.Visible          = false;
            role_edit_form.Visible     = true;
        }
        else
        {
            if (!Page.IsPostBack)
            {
                RolePermissionsCollection rps = RolePermissionManager.GetRolePermissions();

                rps.Sort(delegate(RolePermissions rp1, RolePermissions rp2)
                {
                    return(Comparer <string> .Default.Compare(rp1.RoleName, rp2.RoleName));
                });

                // move everyone to the top
                RolePermissionsCollection rpss = new RolePermissionsCollection();

                foreach (RolePermissions rp in rps)
                {
                    if (rp.RoleName == GraffitiUsers.EveryoneRole)
                    {
                        rpss.Insert(0, rp);
                    }
                }

                foreach (RolePermissions rp in rps)
                {
                    if (rp.RoleName != GraffitiUsers.EveryoneRole)
                    {
                        rpss.Add(rp);
                    }
                }

                Role_List.DataSource = rpss;
                Role_List.DataBind();

                if (Request.QueryString["roleSaved"] != null)
                {
                    string roleSaved = HttpUtility.UrlDecode(Request.QueryString["roleSaved"]);
                    Message.Text = string.Format("The role <strong>{0}</strong> was updated.", roleSaved);
                    Message.Type = StatusType.Success;
                }
            }

            new_role_container.Visible = true;
            role_edit_form.Visible     = false;
            Role_List.Visible          = true;
        }
    }
Example #8
0
    protected void Page_Load(object sender, EventArgs e)
    {
        LiHyperLink.SetNameToCompare(Context, "UserManagement");

        IGraffitiUser currentUser = GraffitiUsers.Current;

        if (Request.QueryString["user"] != null)
        {

            if (!IsPostBack)
            {
                user = GraffitiUsers.GetUser(Request.QueryString["user"]);

                if (user == null)
                    throw new Exception("This user does not exist or cannot be edited.");

                if (!GraffitiUsers.IsAdmin(currentUser) && user.Name != currentUser.Name)
                    throw new SecurityException("You do not have permission to edit this user");

                if (Request.QueryString["new"] != null && !IsPostBack)
                {
                    Message.Text = "The user <strong>" + user.Name + "</strong> was created.";
                    Message.Type = StatusType.Success;
                }
                PageText.Text = "Update " + user.ProperName + "'s profile.";
                AdminUserLinks.Visible = true;
                PasswordLink.NavigateUrl = string.Format("~/graffiti-admin/user-management/users/changepassword.aspx?user={0}", Request.QueryString["user"]);
                if (GraffitiUsers.CanRenameUsers && GraffitiUsers.IsAdmin(GraffitiUsers.Current))
                {
                    AdminUserLinksDelim.Visible = true;
                    RenameLink.Visible = true;
                    RenameLink.NavigateUrl = string.Format("javascript:Telligent_Modal.Open('RenameUser.aspx?user={0}', 400, 200, null);", Request.QueryString["user"]);
                }
                txtExistingUserName.Text = Server.HtmlDecode(user.Name);
                txtProperName.Text = Server.HtmlDecode(user.ProperName);
                txtExistingEmail.Text = user.Email;
                txtAvatar.Text = user.Avatar;
                Editor.Text = user.Bio;
                txtWebsite.Text = string.IsNullOrEmpty(user.WebSite)
                                             ? new Macros().FullUrl(new Urls().Home)
                                             : Server.HtmlEncode(user.WebSite);

                bool isAdmin = GraffitiUsers.IsUserInRole(GraffitiUsers.Current.Name, GraffitiUsers.AdminRole);

                role_section.Visible = isAdmin;
                AllRoles.Visible = isAdmin;

                if (!isAdmin)
                    Cancel_Edit.NavigateUrl = "~/graffiti-admin/";

                if (isAdmin)
                {
                    RolePermissionsCollection rp = RolePermissionManager.GetRolePermissions();

                    RolePermissionsCollection newrp = new RolePermissionsCollection();
                    newrp.AddRange(rp);

                    RolePermissions temp = newrp.Find(delegate(RolePermissions r)
                                                                    {
                                                                        return r.RoleName == GraffitiUsers.EveryoneRole;
                                                                    });

                    if (temp != null)
                        newrp.Remove(temp);

                    newrp.Sort(delegate(RolePermissions rp1, RolePermissions rp2)
                    {
                        return Comparer<string>.Default.Compare(rp1.RoleName, rp2.RoleName);
                    });

                    Roles.DataSource = newrp;
                    Roles.DataBind();

                    foreach (string role in user.Roles)
                    {
                        if (role == GraffitiUsers.AdminRole)
                        {
                            chkAdmin.Checked = true;

                            if (GraffitiUsers.Current.Name == user.Name)
                                chkAdmin.Enabled = false;
                        }
                    }
                }
            }

            new_user_container.Visible = false;
            User_List.Visible = false;
            user_edit_form.Visible = true;
        }
        else
        {

            if (!GraffitiUsers.IsUserInRole(currentUser.Name, GraffitiUsers.AdminRole))
                Response.Redirect("?user="******"*");

            User_List.DataSource = users;
            User_List.DataBind();

            // filter out everyone if they are not a content publisher for licensing
            List<IGraffitiUser> filteredUsers = new List<IGraffitiUser>();
            filteredUsers.AddRange(users);

            bool isEveryonePublisher = RolePermissionManager.IsEveryoneAContentPublisher();

            if (!isEveryonePublisher)
            {
                foreach (IGraffitiUser user in users)
                {
                    if (user.Roles != null && user.Roles[0] == GraffitiUsers.EveryoneRole)
                        filteredUsers.Remove(user);
                }
            }
        }
    }
Example #9
0
 public static void MarkDirty()
 {
     rolePermissions         = null;
     roleCategoryPermissions = null;
 }
Example #10
0
    protected void Page_Load(object sender, EventArgs e)
    {
        LiHyperLink.SetNameToCompare(Context, "UserManagement");

        IGraffitiUser currentUser = GraffitiUsers.Current;


        if (Request.QueryString["user"] != null)
        {
            if (!IsPostBack)
            {
                user = GraffitiUsers.GetUser(Request.QueryString["user"]);


                if (user == null)
                {
                    throw new Exception("This user does not exist or cannot be edited.");
                }

                if (!GraffitiUsers.IsAdmin(currentUser) && user.Name != currentUser.Name)
                {
                    throw new SecurityException("You do not have permission to edit this user");
                }


                if (Request.QueryString["new"] != null && !IsPostBack)
                {
                    Message.Text = "The user <strong>" + user.Name + "</strong> was created.";
                    Message.Type = StatusType.Success;
                }
                PageText.Text            = "Update " + user.ProperName + "'s profile.";
                AdminUserLinks.Visible   = true;
                PasswordLink.NavigateUrl = string.Format("~/graffiti-admin/user-management/users/changepassword.aspx?user={0}", Request.QueryString["user"]);
                if (GraffitiUsers.CanRenameUsers && GraffitiUsers.IsAdmin(GraffitiUsers.Current))
                {
                    AdminUserLinksDelim.Visible = true;
                    RenameLink.Visible          = true;
                    RenameLink.NavigateUrl      = string.Format("javascript:Telligent_Modal.Open('RenameUser.aspx?user={0}', 400, 200, null);", Request.QueryString["user"]);
                }
                txtExistingUserName.Text = Server.HtmlDecode(user.Name);
                txtProperName.Text       = Server.HtmlDecode(user.ProperName);
                txtExistingEmail.Text    = user.Email;
                txtAvatar.Text           = user.Avatar;
                Editor.Text     = user.Bio;
                txtWebsite.Text = string.IsNullOrEmpty(user.WebSite)
                                                                                         ? new Macros().FullUrl(new Urls().Home)
                                                                                         : Server.HtmlEncode(user.WebSite);

                bool isAdmin = GraffitiUsers.IsUserInRole(GraffitiUsers.Current.Name, GraffitiUsers.AdminRole);

                role_section.Visible = isAdmin;
                AllRoles.Visible     = isAdmin;

                if (!isAdmin)
                {
                    Cancel_Edit.NavigateUrl = "~/graffiti-admin/";
                }

                if (isAdmin)
                {
                    RolePermissionsCollection rp = RolePermissionManager.GetRolePermissions();

                    RolePermissionsCollection newrp = new RolePermissionsCollection();
                    newrp.AddRange(rp);

                    RolePermissions temp = newrp.Find(delegate(RolePermissions r)
                    {
                        return(r.RoleName == GraffitiUsers.EveryoneRole);
                    });

                    if (temp != null)
                    {
                        newrp.Remove(temp);
                    }

                    newrp.Sort(delegate(RolePermissions rp1, RolePermissions rp2)
                    {
                        return(Comparer <string> .Default.Compare(rp1.RoleName, rp2.RoleName));
                    });

                    Roles.DataSource = newrp;
                    Roles.DataBind();

                    foreach (string role in user.Roles)
                    {
                        if (role == GraffitiUsers.AdminRole)
                        {
                            chkAdmin.Checked = true;

                            if (GraffitiUsers.Current.Name == user.Name)
                            {
                                chkAdmin.Enabled = false;
                            }
                        }
                    }
                }
            }

            new_user_container.Visible = false;
            User_List.Visible          = false;
            user_edit_form.Visible     = true;
        }
        else
        {
            if (!GraffitiUsers.IsUserInRole(currentUser.Name, GraffitiUsers.AdminRole))
            {
                Response.Redirect("?user="******"*");

            User_List.DataSource = users;
            User_List.DataBind();

            // filter out everyone if they are not a content publisher for licensing
            List <IGraffitiUser> filteredUsers = new List <IGraffitiUser>();
            filteredUsers.AddRange(users);

            bool isEveryonePublisher = RolePermissionManager.IsEveryoneAContentPublisher();

            if (!isEveryonePublisher)
            {
                foreach (IGraffitiUser user in users)
                {
                    if (user.Roles != null && user.Roles[0] == GraffitiUsers.EveryoneRole)
                    {
                        filteredUsers.Remove(user);
                    }
                }
            }
        }
    }