public int RemoveMailbox(int id) { if (id < 0) { throw new ArgumentException("Invalid domain id.", "id"); } var mailbox = MailServer.GetMailbox(id, MailServerFactory); var groups = MailServer.GetMailGroups(MailServerFactory); var groups_contains_mailbox = groups.Where(g => g.InAddresses.Contains(mailbox.Address)) .Select(g => g); foreach (var mail_group in groups_contains_mailbox) { if (mail_group.InAddresses.Count == 1) { MailServer.DeleteMailGroup(mail_group.Id, MailServerFactory); } else { mail_group.RemoveMember(mailbox.Address.Id); } } MailServer.DeleteMailbox(mailbox); return(id); }
public List <MailGroupData> GetMailGroups() { var groups = MailServer.GetMailGroups(MailServerFactory); return(groups .Select(group => group.ToMailGroupData()) .ToList()); }
public List <MailGroupData> GetMailGroups() { if (!IsAdmin) { throw new SecurityException("Need admin privileges."); } var groups = MailServer.GetMailGroups(MailServerFactory); return(groups .Select(group => group.ToMailGroupData()) .ToList()); }
public int RemoveMailbox(int id) { if (id < 0) { throw new ArgumentException(@"Invalid domain id.", "id"); } var mailbox = MailServer.GetMailbox(id, MailServerFactory); if (mailbox == null) { throw new ItemNotFoundException("Account not found."); } var isSharedDomain = mailbox.Address.Domain.Tenant == Defines.SHARED_TENANT_ID; if (!IsAdmin && !isSharedDomain) { throw new SecurityException("Need admin privileges."); } if (isSharedDomain && !IsAdmin && mailbox.Account.TeamlabAccount.ID != SecurityContext.CurrentAccount.ID) { throw new SecurityException("Removing of a shared mailbox is allowed only for the current account if user is not admin."); } var groups = MailServer.GetMailGroups(MailServerFactory); var groupsContainsMailbox = groups.Where(g => g.InAddresses.Contains(mailbox.Address)) .Select(g => g); foreach (var mailGroup in groupsContainsMailbox) { if (mailGroup.InAddresses.Count == 1) { MailServer.DeleteMailGroup(mailGroup.Id, MailServerFactory); } else { mailGroup.RemoveMember(mailbox.Address.Id); } } MailServer.DeleteMailbox(mailbox); MailBoxManager.CachedAccounts.Clear(mailbox.Account.TeamlabAccount.ID.ToString()); return(id); }