void IGroupRolemembersInterface.Delete(UGUI requestingAgent, UGI group, UUID roleID, UGUI principal) { bool isUnlimited = false; if (!IsGroupOwner(group, requestingAgent)) { try { VerifyAgentPowers(group, requestingAgent, GroupPowers.AssignMember); isUnlimited = true; } catch (GroupInsufficientPowersException) { VerifyAgentPowers(group, requestingAgent, GroupPowers.AssignMemberLimited); } } else { isUnlimited = true; } if (!isUnlimited && !Rolemembers.ContainsKey(requestingAgent, group, roleID, requestingAgent)) { throw new GroupInsufficientPowersException(GroupPowers.AssignMemberLimited); } m_InnerService.Rolemembers.Delete(requestingAgent, group, roleID, principal); }
void IGroupRolemembersInterface.Add(UGUI requestingAgent, GroupRolemember rolemember) { bool isUnlimited = false; if (m_InnerService.Invites[requestingAgent, rolemember.Group, rolemember.RoleID, rolemember.Principal].Count != 0) { } else { if (!IsGroupOwner(rolemember.Group, requestingAgent)) { try { VerifyAgentPowers(rolemember.Group, requestingAgent, GroupPowers.AssignMember); isUnlimited = true; } catch (GroupInsufficientPowersException) { VerifyAgentPowers(rolemember.Group, requestingAgent, GroupPowers.AssignMemberLimited); } } else { isUnlimited = true; } if (!isUnlimited && !Rolemembers.ContainsKey(requestingAgent, rolemember.Group, rolemember.RoleID, requestingAgent)) { throw new GroupInsufficientPowersException(GroupPowers.AssignMemberLimited); } } m_InnerService.Rolemembers.Add(requestingAgent, rolemember); }
public GroupMember AddAgentToGroup(UGUI requestingAgent, UGI group, UUID roleid, UGUI agent, string accessToken) { bool alreadyInGroup; GroupMember gmem; alreadyInGroup = Members.TryGetValue(requestingAgent, group, agent, out gmem); if (!alreadyInGroup) { gmem = Members.Add(requestingAgent, group, agent, roleid, accessToken); } try { if (!Rolemembers.ContainsKey(requestingAgent, group, UUID.Zero, agent)) { var rolemember = new GroupRolemember { Group = group, Principal = agent, RoleID = UUID.Zero }; Rolemembers.Add(requestingAgent, rolemember); } if (UUID.Zero != roleid) { var rolemember = new GroupRolemember { Group = group, Principal = agent, RoleID = roleid }; Rolemembers.Add(requestingAgent, rolemember); } try { var invites = Invites[requestingAgent, group, roleid, agent]; foreach (var invite in invites) { invites.Remove(invite); } } catch { /* intentionally ignored */ } } catch { if (!alreadyInGroup) { Members.Delete(requestingAgent, group, agent); } } return(gmem); }
public virtual GroupInfo CreateGroup(UGUI requestingAgent, GroupInfo ginfo, GroupPowers everyonePowers, GroupPowers ownerPowers) { var role_everyone = new GroupRole { ID = UUID.Zero, Group = ginfo.ID, Name = "Everyone", Description = "Everyone in the group", Title = "Member of " + ginfo.ID.GroupName, Powers = everyonePowers }; var role_owner = new GroupRole { ID = UUID.Random, Group = ginfo.ID, Name = "Owners", Description = "Owners of the group", Title = "Owner of " + ginfo.ID.GroupName, Powers = ownerPowers }; ginfo.OwnerRoleID = role_owner.ID; var gmemrole_owner = new GroupRolemember { Group = ginfo.ID, RoleID = role_owner.ID, Principal = ginfo.Founder }; var gmemrole_everyone = new GroupRolemember { Group = ginfo.ID, RoleID = role_everyone.ID, Principal = ginfo.Founder }; Groups.Create(requestingAgent, ginfo); try { Roles.Add(requestingAgent, role_everyone); Roles.Add(requestingAgent, role_owner); Members.Add(requestingAgent, ginfo.ID, ginfo.Founder, role_owner.ID, UUID.Random.ToString()); Rolemembers.Add(requestingAgent, gmemrole_owner); Rolemembers.Add(requestingAgent, gmemrole_everyone); ginfo.RoleCount = 2; ginfo.MemberCount = 1; } catch { Groups.Delete(requestingAgent, ginfo.ID); throw; } return(ginfo); }
GroupRolemember IGroupRolemembersInterface.this[UUI requestingAgent, UGI group, UUID roleID, UUI principal] { get { GroupRolemember rolemem; if (!Rolemembers.TryGetValue(requestingAgent, group, roleID, principal, out rolemem)) { throw new KeyNotFoundException(); } return(rolemem); } }