//Derermines if current user is in one of the selected users (or is in a selected role) protected bool IsInSelectedList(Field recipientsField) { AccountSelectorField accountSelectorField = new AccountSelectorField(recipientsField); List <Account> selectedRoles = accountSelectorField.GetSelectedAccountsByType(AccountType.Role); List <Account> selectedUsers = accountSelectorField.GetSelectedAccountsByType(AccountType.User); if ((selectedUsers.Count + selectedRoles.Count) == 0) { return(false); } User currentUser = Context.User; if ( selectedUsers.Any( user => string.Equals(user.Name, currentUser.Name, StringComparison.InvariantCultureIgnoreCase))) { return(true); } if (selectedRoles.Any(role => currentUser.IsInRole(role.Name))) { return(true); } return(false); }
//Returns unique email addresses of users that correspond to the selected list of users/roles private List <string> GetEmailsForUsersAndRoles(Field field) { List <string> emails = new List <string>(); AccountSelectorField accountSelectorField = new AccountSelectorField(field); List <Account> selectedRoles = accountSelectorField.GetSelectedAccountsByType(AccountType.Role); List <Account> selectedUsers = accountSelectorField.GetSelectedAccountsByType(AccountType.User); //The shell site has Sitecore Domain var allUsers = Sitecore.Context.Domain.GetUsers(); //var allUsers = Sitecore.SecurityModel.DomainManager.GetDomain("Sitecore").GetUsers(); foreach (var user in allUsers) { string userEmail = user.Profile.Email; if (string.IsNullOrEmpty(userEmail)) { continue; } //if current user is in selected role add his email and check next user if (selectedRoles.Any(role => user.IsInRole(role.Name))) { if (!emails.Contains(userEmail)) { emails.Add(userEmail); } continue; } //if current user is one of the selected one add his email if (selectedUsers.Any(u => string.Equals(u.Name, user.Name, StringComparison.InvariantCultureIgnoreCase))) { if (!emails.Contains(userEmail)) { emails.Add(userEmail); } } } return(emails); }
//Returns unique email addresses of users that correspond to the selected list of users/roles private List<string> GetEmailsForUsersAndRoles(Field field) { List<string> emails = new List<string>(); AccountSelectorField accountSelectorField = new AccountSelectorField(field); List<Account> selectedRoles = accountSelectorField.GetSelectedAccountsByType(AccountType.Role); List<Account> selectedUsers = accountSelectorField.GetSelectedAccountsByType(AccountType.User); //The shell site has Sitecore Domain var allUsers = Sitecore.Context.Domain.GetUsers(); //var allUsers = Sitecore.SecurityModel.DomainManager.GetDomain("Sitecore").GetUsers(); foreach (var user in allUsers) { string userEmail = user.Profile.Email; if (string.IsNullOrEmpty(userEmail)) continue; //if current user is in selected role add his email and check next user if (selectedRoles.Any(role => user.IsInRole(role.Name))) { if (!emails.Contains(userEmail)) { emails.Add(userEmail); } continue; } //if current user is one of the selected one add his email if (selectedUsers.Any(u => string.Equals(u.Name, user.Name, StringComparison.InvariantCultureIgnoreCase))) { if (!emails.Contains(userEmail)) { emails.Add(userEmail); } } } return emails; }
//Derermines if current user is in one of the selected users (or is in a selected role) protected bool IsInSelectedList(Field recipientsField) { AccountSelectorField accountSelectorField = new AccountSelectorField(recipientsField); List<Account> selectedRoles = accountSelectorField.GetSelectedAccountsByType(AccountType.Role); List<Account> selectedUsers = accountSelectorField.GetSelectedAccountsByType(AccountType.User); if ((selectedUsers.Count + selectedRoles.Count) == 0) return false; User currentUser = Context.User; if ( selectedUsers.Any( user => string.Equals(user.Name, currentUser.Name, StringComparison.InvariantCultureIgnoreCase))) return true; if (selectedRoles.Any(role => currentUser.IsInRole(role.Name))) return true; return false; }