protected void _AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) { RoleMembershipData data = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID); if (data != null) { return; } data = new RoleMembershipData(); data.GroupID = GroupID; data.PrincipalID = AgentID; data.RoleID = RoleID; m_Database.StoreRoleMember(data); // Make it the SelectedRoleID MembershipData membership = m_Database.RetrieveMember(GroupID, AgentID); if (membership == null) { m_log.DebugFormat("[Groups]: ({0}) No such member {0} in group {1}", AgentID, GroupID); return; } membership.Data["SelectedRoleID"] = RoleID.ToString(); m_Database.StoreMember(membership); }
public bool AddAgentToGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) { //if (!m_Database.CheckOwnerRole(RequestingAgentID, GroupID, RoleID)) // return; // check permissions bool limited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMemberLimited); bool unlimited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMember) | IsOwner(RequestingAgentID, GroupID); if (!limited || !unlimited) { m_log.DebugFormat("[Groups]: ({0}) Attempt at assigning {1} to role {2} denied because of lack of permission", RequestingAgentID, AgentID, RoleID); return(false); } // AssignMemberLimited means that the person can assign another person to the same roles that she has in the group if (!unlimited && limited) { // check whether person's has this role RoleMembershipData rolemembership = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID); if (rolemembership == null) { m_log.DebugFormat("[Groups]: ({0}) Attempt at assigning {1} to role {2} denied because of limited permission", RequestingAgentID, AgentID, RoleID); return(false); } } _AddAgentToGroupRole(RequestingAgentID, AgentID, GroupID, RoleID); return(true); }
public bool StoreRoleMember(RoleMembershipData data) { CompositeKey dkey = new CompositeKey(data.GroupID, data.RoleID.ToString(), data.PrincipalID); m_RoleMembership[dkey] = data; return(true); }
public bool DeleteRoleMember(RoleMembershipData data) { CompositeKey dkey = new CompositeKey(data.GroupID, data.RoleID.ToString(), data.PrincipalID); if (m_RoleMembership.ContainsKey(dkey)) { return(m_RoleMembership.Remove(dkey)); } return(false); }
public bool RemoveAgentFromGroupRole(string RequestingAgentID, string AgentID, UUID GroupID, UUID RoleID) { // Don't remove from Everyone role! if (RoleID == UUID.Zero) { return(false); } // check permissions bool unlimited = HasPower(RequestingAgentID, GroupID, GroupPowers.AssignMember) || IsOwner(RequestingAgentID, GroupID); if (!unlimited) { m_log.DebugFormat("[Groups]: ({0}) Attempt at removing {1} from role {2} denied because of lack of permission", RequestingAgentID, AgentID, RoleID); return(false); } RoleMembershipData rolemember = m_Database.RetrieveRoleMember(GroupID, RoleID, AgentID); if (rolemember == null) { return(false); } m_Database.DeleteRoleMember(rolemember); // Find another role for this person UUID newRoleID = UUID.Zero; // Everyone RoleMembershipData[] rdata = m_Database.RetrieveMemberRoles(GroupID, AgentID); if (rdata != null) { foreach (RoleMembershipData r in rdata) { if (r.RoleID != UUID.Zero) { newRoleID = r.RoleID; break; } } } MembershipData member = m_Database.RetrieveMember(GroupID, AgentID); if (member != null) { member.Data["SelectedRoleID"] = newRoleID.ToString(); m_Database.StoreMember(member); } return(true); }
private bool IsOwner(string agentID, UUID groupID) { GroupData group = m_Database.RetrieveGroup(groupID); if (group == null) { return(false); } RoleMembershipData rmembership = m_Database.RetrieveRoleMember(groupID, new UUID(group.Data["OwnerRoleID"]), agentID); if (rmembership == null) { return(false); } return(true); }
public bool DeleteRoleMember(RoleMembershipData data) { return(m_RoleMembership.Delete(new string[] { "GroupID", "RoleID", "PrincipalID" }, new string[] { data.GroupID.ToString(), data.RoleID.ToString(), data.PrincipalID })); }
public bool StoreRoleMember(RoleMembershipData data) { return(m_RoleMembership.Store(data)); }