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); } }
public GroupRolemembership(GroupRolemembership src) : base(src) { GroupTitle = src.GroupTitle; }