コード例 #1
0
        /// <summary>
        ///     Returns all the users for a given role
        /// </summary>
        /// <param name="role"></param>
        /// <returns></returns>
        public static List <IGraffitiUser> GetUsers(string role)
        {
            var userList = ZCache.Get <string[]>("usersByRole-" + role);

            if (userList == null)
            {
                if (role != "*")
                {
                    userList = controller.GetUsersInRole(role);
                }
                else
                {
                    StringCollection sc = new StringCollection();

                    foreach (RolePermissions rp in RolePermissionManager.GetRolePermissions())
                    {
                        var users = controller.GetUsersInRole(rp.RoleName);
                        foreach (string u in users)
                        {
                            if (!sc.Contains(u))
                            {
                                sc.Add(u.ToLower());
                            }
                        }
                    }

                    var admimUsers = controller.GetUsersInRole(AdminRole);
                    foreach (string u in admimUsers)
                    {
                        if (!sc.Contains(u))
                        {
                            sc.Add(u.ToLower());
                        }
                    }

                    userList = new string[sc.Count];
                    sc.CopyTo(userList, 0);
                }

                ZCache.InsertCache("usersByRole-" + role, userList, 180);
            }

            var the_users = new List <IGraffitiUser>();

            foreach (string username in userList)
            {
                the_users.Add(GetUser(username));
            }

            the_users.Sort(delegate(IGraffitiUser u1, IGraffitiUser u2)
            {
                return
                (Comparer <string> .Default.Compare(
                     u1.ProperName, u2.ProperName));
            });

            return(the_users);
        }
コード例 #2
0
        public static bool IsEveryoneAContentPublisher()
        {
            RolePermissionsCollection rpc = RolePermissionManager.GetRolePermissions();

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

            return(false);
        }
コード例 #3
0
ファイル: GraffitiUsers.cs プロジェクト: harder/GraffitiCMS
        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);
        }