List <GroupRolemembership> IGroupRolemembersInterface.this[UUI requestingAgent, UUI principal]
        {
            get
            {
                var rolemembers = new List <GroupRolemembership>();
                using (var conn = new MySqlConnection(m_ConnectionString))
                {
                    conn.Open();
                    using (var cmd = new MySqlCommand("SELECT rm.*, r.Powers, r.Title FROM grouprolememberships AS rm INNER JOIN grouproles AS r ON rm.GroupID = r.GroupID AND rm.RoleID = r.RoleID WHERE rm.PrincipalID = @principalid", conn))
                    {
                        cmd.Parameters.AddParameter("@principalid", principal.ID);
                        using (MySqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                GroupRolemembership grolemem = reader.ToGroupRolemembership();
                                grolemem.Principal = ResolveName(grolemem.Principal);
                                grolemem.Group     = ResolveName(requestingAgent, grolemem.Group);
                                rolemembers.Add(grolemem);
                            }
                        }
                    }

                    using (var cmd = new MySqlCommand("SELECT * FROM groupmemberships WHERE rm.PrincipalID = @principalid", conn))
                    {
                        cmd.Parameters.AddParameter("@principalid", principal.ID);
                        using (MySqlDataReader reader = cmd.ExecuteReader())
                        {
                            while (reader.Read())
                            {
                                var       group = new UGI(reader.GetUUID("GroupID"));
                                GroupRole groupRole;
                                if (Roles.TryGetValue(requestingAgent, group, UUID.Zero, out groupRole))
                                {
                                    GroupRolemembership grolemem = reader.ToGroupRolemembershipEveryone(groupRole.Powers);
                                    grolemem.Principal  = ResolveName(grolemem.Principal);
                                    grolemem.Group      = ResolveName(requestingAgent, grolemem.Group);
                                    grolemem.GroupTitle = groupRole.Title;
                                    rolemembers.Add(grolemem);
                                }
                            }
                        }
                    }
                }

                return(rolemembers);
            }
        }
예제 #2
0
 public GroupRolemembership(GroupRolemembership src)
     : base(src)
 {
     GroupTitle = src.GroupTitle;
 }