пользователи группы в SharePoint

может ли кто-нибудь показать мне, как получить пользователей в определенной группе с помощью sharepoint?

Итак, у меня есть список, содержащий пользователей и / или группы. я хочу получить всех пользователей в этом списке. есть ли способ различать, является ли элемент списка группой или пользователем. если ее группе, мне нужно получить всех пользователей в этой группе.

im с помощью c#, и я пытаюсь сделать это, сделав его консольным приложением.

im новый для sharepoint и im действительно прыгать в глубокий конец бассейна здесь, любая помощь будет высоко ценится.

ура..

4 ответов


первое, что вам нужно знать, это то, что когда у вас есть список с полем пользователя / группы, вы должны знать его тип. При наличии одного пользователя или группы в пределах значения элемента тип поля-SPFieldUserValue. Однако если поле имеет несколько пользователей / групп, тип поля-SPFieldUserValueCollection.
Я предполагаю, что ваше поле позволяет выбрать одного пользователя / группу, и у вас уже есть следующие объекты:

SPSite site;
SPWeb web;
SPListItem item;

теперь мы проверим поле значение для пользователя / группы и получить список пользователей, независимо от того, какой он (имя поля "пользователи").

SPFieldUserValue usersField = new SPFieldUserValue(mainWeb, item["Users"].ToString());
bool isUser = SPUtility.IsLoginValid(site, usersField.User.LoginName);
List<SPUser> users = new List<SPUser>();

if (isUser)
{
    // add a single user to the list
    users.Add(usersField.User);
}
else
{
    SPGroup group = web.Groups.GetByID(usersField.LookupId);

    foreach (SPUser user in group.Users)
    {
        // add all the group users to the list
        users.Add(user.User);
    }
}

Я надеюсь, что это поможет вам.

Tks,
Pedro José Batista


Примечание: объект SPUser также может быть группой AD (то есть объект SPUser может существовать для "DOMAIN\Domain Users"... именно поэтому объект SPUser также содержит свойство IsDomainGroup.

из этой информации вы можете начать просматривать группы объявлений с помощью объектов SPPrincipalInfo... однако это не всегда приятно.

следует иметь в виду, что объект SPGroup включает свойство ContainsCurrentUser, которое может проходить AD группы... однако это предполагает, что у вас есть объект SPGroup для работы.

наслаждайтесь.
- Скотт!--1-->


private bool IsMember()
    {
        bool isMember;
        SPSite site = new SPSite(SiteURL);
        SPWeb web = site.OpenWeb();
        isMember = web.IsCurrentUserMemberOfGroup(web.Groups["GroupName"].ID);
        web.Close();
        site.Close();
        return isMember;
    }

это лучше использовать web.SiteGroups вместо web.Groups как группа может быть унаследована этим сайтом.