получить пользователей по группе в sharepoint - PullRequest
10 голосов
/ 28 ноября 2008

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

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

Я использую C #, и я пытаюсь сделать все, сделав это консольное приложение.

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

веселит ..

Ответы [ 4 ]

14 голосов
/ 28 ноября 2008

Первое, что вам нужно знать, это то, что когда у вас есть список с полем «Пользователь / группа», вы должны знать о его типе. Когда у вас есть один пользователь или группа в пределах значения элемента, тип поля 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,
Педро Хосе Батиста

5 голосов
/ 05 ноября 2009

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

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

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

Наслаждайтесь.
-Скотт

0 голосов
/ 02 августа 2011
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;
    }
0 голосов
/ 11 марта 2011

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

...