Получать пользователей по группам в sharepoint

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

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

im, используя С#, и im пытается сделать thins, сделав это консольным приложением.

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

веселит..

Ответ 1

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

Ответ 2

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

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

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

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

Ответ 3

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

Ответ 4

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;
    }