c# - obtener usuarios por grupo en sharepoint
moss console (4)
¿alguien puede mostrarme cómo obtener los usuarios dentro de cierto grupo usando Sharepoint?
entonces tengo una lista que contiene usuarios y / o grupos. Quiero recuperar todos los usuarios en esa lista. ¿Hay alguna forma de diferenciar si el elemento de la lista es un grupo o usuario? si es un grupo, necesito obtener todos los usuarios dentro de ese grupo.
Estoy usando c #, y estoy tratando de adelgazar haciéndola una aplicación de consola.
Soy nuevo en sharepoint y estoy realmente saltando al extremo de la piscina aquí, cualquier ayuda sería muy apreciada.
aclamaciones..
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;
}
Lo primero que debe saber es que cuando tiene una lista con un campo Usuario / Grupo, debe tener en cuenta su tipo. Cuando tiene un usuario o grupo dentro del valor del elemento, el tipo de campo es SPFieldUserValue. Sin embargo, si el campo tiene múltiples selecciones de usuario / grupo, el tipo de campo es SPFieldUserValueCollection.
Asumiré que su campo permite una única selección de usuario / grupo y ya tiene los siguientes objetos:
SPSite site;
SPWeb web;
SPListItem item;
Ahora, verificaremos el valor del campo para un usuario / grupo y recuperaremos una lista de usuarios, independientemente de qué tipo sea (el nombre del campo es "Usuarios" ).
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);
}
}
Espero que te ayude.
Tks,
Pedro José Batista
Nota: un objeto SPUser también puede ser un Grupo AD (es decir, un objeto SPUser podría existir para "DOMINIO / Usuarios de dominio" ... razón por la cual el objeto SPUser también contiene la propiedad IsDomainGroup.
A partir de esta información, puede comenzar a recorrer los grupos de AD utilizando los objetos SPPrincipalInfo ... sin embargo, no siempre es agradable.
Una cosa que vale la pena tener en cuenta es que el objeto SPGroup incluye la propiedad ContainsCurrentUser que puede atravesar grupos AD ... sin embargo, esto supone que tiene un objeto SPGroup para trabajar.
Disfrutar.
-Scott
Es mejor utilizar web.SiteGroups
lugar de web.Groups
como grupo pueden ser heredados por ese sitio.