Procedimiento para trabajar con usuarios y grupos
Última modificación: viernes, 29 de abril de 2011
Hace referencia a: SharePoint Foundation 2010
En este artículo
Recuperación de todos los usuarios de un grupo de SharePoint
Recuperación de propiedades específicas de usuarios
Recuperación de todos los usuarios de todos los grupos de una colección de sitios
Agregar un usuario a un grupo de SharePoint
Disponible en SharePoint Online
La misma lógica de recuperación de datos que se aplica a sitios web, listas y elementos de lista en el espacio de nombres Microsoft.SharePoint.Client (JavaScript: SP) se aplica a usuarios y grupos. Al igual que otros objetos en este espacio de nombres, puede usar un objeto CreationInformation para crear un objeto de usuario o grupo.
Recuperación de todos los usuarios de un grupo de SharePoint
La propiedad SiteGroups (JavaScript: siteGroups) de la clase Web (JavaScript: Web) obtiene todos los grupos de todos los sitios web dentro de una colección de sitios. Como se muestra en el siguiente ejemplo, puede usar el método GetById(Int32) (JavaScript: getById(id)) para devolver un grupo específico de la colección de grupos. La propiedad Users (JavaScript: users) de la clase Group (JavaScript: Group) obtiene todos los usuarios del grupo. Debido a que el siguiente ejemplo carga los usuarios en el grupo que se especificó, todas las propiedades de todos los objetos de usuario están disponibles.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveAllUsersInGroup
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(7);
UserCollection collUser = oGroup.Users;
clientContext.Load(collUser);
clientContext.ExecuteQuery();
foreach (User oUser in collUser)
{
Console.WriteLine("User: {0} ID: {1} Email: {2} Login Name: {3}",
oUser.Title, oUser.Id, oUser.Email, oUser.LoginName);
}
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class RetrieveAllUsersInGroup
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
Dim oGroup As Group = collGroup.GetById(7)
Dim collUser As UserCollection = oGroup.Users
clientContext.Load(collUser)
clientContext.ExecuteQuery()
Dim oUser As User
For Each oUser In collUser
Console.WriteLine("User: {0} ID: {1} Email: {2} Login Name: {3}", _
oUser.Title, oUser.Id, oUser.Email, oUser.LoginName)
Next oUser
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
function retrieveAllUsersInGroup() {
var clientContext = new SP.ClientContext(siteUrl);
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(7);
this.collUser = oGroup.get_users();
clientContext.load(collUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var userInfo = '';
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
this.userInfo += '\nUser: ' + oUser.get_title() +
'\nID: ' + oUser.get_id() +
'\nEmail: ' + oUser.get_email() +
'\nLogin Name: ' + oUser.get_loginName();
}
alert(userInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Recuperación de propiedades específicas de usuarios
El siguiente ejemplo modifica el ejemplo anterior para que devuelva solo el título y la dirección de correo electrónico de todos los usuarios de un grupo en particular. El ejemplo usa el método Include<TSource>(IQueryable<TSource>, []) (instrucción JavaScript: Include) para especificar que solo las propiedades Title (JavaScript: title) y Email (JavaScript: email) están disponibles en cada objeto; si se llama a otras propiedades se devolverá una PropertyOrFieldNotInitializedException.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveSpecificUserProperties
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(7);
UserCollection collUser = oGroup.Users;
clientContext.Load(collUser,
users => users.Include(
user => user.Title,
user => user.LoginName,
user => user.Email));
clientContext.ExecuteQuery();
foreach (User oUser in collUser)
{
Console.WriteLine("User: {0} Login name: {1} Email: {2}",
oUser.Title, oUser.LoginName, oUser.Email);
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class RetrieveSpecificUserProperties
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
Dim oGroup As Group = collGroup.GetById(7)
Dim collUser As UserCollection = oGroup.Users
clientContext.Load(collUser, Function(users) users.Include( _
Function(user) user.Title, _
Function(user) user.LoginName, _
Function(user) user.Email))
clientContext.ExecuteQuery()
Dim oUser As User
For Each oUser In collUser
Console.WriteLine("User: {0} Login name: {1} Email: {2}", _
oUser.Title, oUser.LoginName, oUser.Email)
Next oUser
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
function retrieveSpecificUserProperties() {
var clientContext = new SP.ClientContext(siteUrl);
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(7);
this.collUser = oGroup.get_users();
clientContext.load(collUser, 'Include(Title, LoginName, Email)');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var userInfo = '';
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
this.userInfo += '\nUser: ' + oUser.get_title() +
'\nEmail: ' + oUser.get_email() +
'\vLogin Name: ' + oUser.get_loginName();
}
alert(userInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Recuperación de todos los usuarios de todos los grupos de una colección de sitios
Los ejemplos anteriores muestran cómo devolver todos los usuarios de un grupo específico. Para devolver todos los usuarios de todos los grupos de una colección de sitios, puede usar el método Load<T>(T, []) (JavaScript: load(clientObject)) dos veces para cargar tanto la colección de grupos, como la colección de usuarios de cada grupo, para que todas las propiedades de todos los usuarios y grupos estén disponibles. Use la sintaxis del método de consulta de LINQ para incluir cada grupo, como se muestra en el siguiente ejemplo.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveAllUsersAllGroups
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
clientContext.Load(collGroup);
clientContext.Load(collGroup,
groups => groups.Include(
group => group.Users));
clientContext.ExecuteQuery();
foreach (Group oGroup in collGroup)
{
UserCollection collUser = oGroup.Users;
foreach (User oUser in collUser)
{
Console.WriteLine("Group ID: {0} Group Title: {1} User: {2} Login Name: {3}",
oGroup.Id, oGroup.Title, oUser.Title, oUser.LoginName);
}
}
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class RetrieveAllUsersAllGroups
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
clientContext.Load(collGroup)
clientContext.Load(collGroup, Function(groups) groups.Include( _
Function(group) group.Users))
clientContext.ExecuteQuery()
Dim oGroup As Group
For Each oGroup In collGroup
Dim collUser As UserCollection = oGroup.Users
Dim oUser As User
For Each oUser In collUser
Console.WriteLine("Group ID: {0} Group Title: {1} User: {2} Login Name: {3}", _
oGroup.Id, oGroup.Title, oUser.Title, oUser.LoginName)
Next oUser
Next oGroup
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
function retrieveAllUsersAllGroups() {
var clientContext = new SP.ClientContext(siteUrl);
this.collGroup = clientContext.get_web().get_siteGroups();
clientContext.load(collGroup);
clientContext.load(collGroup, 'Include(Users)');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var userInfo = '';
var groupEnumerator = collGroup.getEnumerator();
while (groupEnumerator.moveNext()) {
var oGroup = groupEnumerator.get_current();
var collUser = oGroup.get_users();
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
this.userInfo += '\nGroup ID: ' + oGroup.get_id() +
'\nGroup Title: ' + oGroup.get_title() +
'\nUser: ' + oUser.get_title() +
'\nLogin Name: ' + oUser.get_loginName();
}
}
alert(userInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Para mejorar la eficacia, puede llamar al método Load<T>(T, []) (JavaScript: load(clientObject)) una vez y modificar la expresión de consulta para que incluya solo propiedades específicas, como se muestra en el siguiente ejemplo.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class RetrieveAllUsersAllGroupsSpecificProperties
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection");
GroupCollection collGroup = clientContext.Web.SiteGroups;
clientContext.Load(collGroup,
groups => groups.Include(
group => group.Title,
group => group.Id,
group => group.Users.Include(
user => user.Title,
user => user.LoginName)));
clientContext.ExecuteQuery();
foreach (Group oGroup in collGroup)
{
UserCollection collUser = oGroup.Users;
foreach (User oUser in oGroup.Users)
{
Console.WriteLine("Group: {0} Group ID: {1} User: {2} Login Name: {3}",
oGroup.Title, oGroup.Id, oUser.Title, oUser.LoginName);
}
}
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class RetrieveAllUsersAllGroupsSpecificProperties
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
clientContext.Load(collGroup, Function(groups) groups.Include( _
Function(group) group.Title, _
Function(group) group.Id, _
Function(group) group.Users.Include( _
Function(user) user.Title, _
Function(user) user.LoginName)))
clientContext.ExecuteQuery()
Dim oGroup As Group
For Each oGroup In collGroup
Dim collUser As UserCollection = oGroup.Users
Dim oUser As User
For Each oUser In oGroup.Users
Console.WriteLine("Group: {0} Group ID: {1} User: {2} Login Name: {3}", _
oGroup.Title, oGroup.Id, oUser.Title, oUser.LoginName)
Next oUser
Next oGroup
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
function retrieveAllUsersAllGroupsSpecificProperties() {
var clientContext = new SP.ClientContext(siteUrl);
this.collGroup = clientContext.get_web().get_siteGroups();
clientContext.load(collGroup, 'Include(Title,Id,Users.Include(Title,LoginName))');
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
var userInfo = '';
var groupEnumerator = collGroup.getEnumerator();
while (groupEnumerator.moveNext()) {
var oGroup = groupEnumerator.get_current();
var collUser = oGroup.get_users();
var userEnumerator = collUser.getEnumerator();
while (userEnumerator.moveNext()) {
var oUser = userEnumerator.get_current();
this.userInfo += '\nGroup ID: ' + oGroup.get_id() +
'\nGroup Title: ' + oGroup.get_title() +
'\nUser: ' + oUser.get_title() +
'\nLogin Name: ' + oUser.get_loginName();
}
}
alert(userInfo);
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Agregar un usuario a un grupo de SharePoint
Si el objeto de usuario que desea agregar ya existe en la colección de sitios, puede usar el método AddUser(User) (JavaScript: addUser(user)) para agregar el usuario a la colección de usuarios del grupo. Pero si el usuario no existe, como en el siguiente código de ejemplo, use la clase UserCreationInformation (JavaScript: UserCreationInformation) para definir un nuevo usuario y, a continuación, agregarlo a la colección de usuarios del grupo a través del método Add(UserCreationInformation) (JavaScript: add(parameters)). En este ejemplo se usa el método GetById(Int32) (JavaScript: getById(id)) para devolver un grupo específico de la colección de grupos dentro de la colección de sitios; luego se define un nuevo objeto de usuario y se lo agrega a la colección de usuarios del grupo.
using System;
using Microsoft.SharePoint.Client;
namespace Microsoft.SDK.SharePointServices.Samples
{
class AddUserToSharePointGroup
{
static void Main()
{
ClientContext clientContext = new ClientContext("http://MyServer/sites/MySiteCollection ");
GroupCollection collGroup = clientContext.Web.SiteGroups;
Group oGroup = collGroup.GetById(6);
UserCreationInformation userCreationInfo = new UserCreationInformation();
userCreationInfo.Email = "alias@somewhere.com";
userCreationInfo.LoginName = @"DOMAIN\alias";
userCreationInfo.Title = "John";
User oUser = oGroup.Users.Add(userCreationInfo);
clientContext.ExecuteQuery();
}
}
}
Imports System
Imports Microsoft.SharePoint.Client
Namespace Microsoft.SDK.SharePointServices.Samples
Class AddUserToSharePointGroup
Shared Sub Main()
Dim siteUrl As String = "http://MyServer/sites/MySiteCollection"
Dim collGroup As GroupCollection = clientContext.Web.SiteGroups
Dim oGroup As Group = collGroup.GetById(7)
Dim userCreationInfo As New UserCreationInformation()
userCreationInfo.Email = "alias@somewhere.com"
userCreationInfo.LoginName = "DOMAIN\alias"
userCreationInfo.Title = "John"
Dim oUser As User = oGroup.Users.Add(userCreationInfo)
clientContext.ExecuteQuery()
End Sub
End Class
End Namespace
var siteUrl = '/sites/MySiteCollection ';
function addUserToSharePointGroup() {
var clientContext = new SP.ClientContext(siteUrl);
var collGroup = clientContext.get_web().get_siteGroups();
var oGroup = collGroup.getById(7);
var userCreationInfo = new SP.UserCreationInformation();
userCreationInfo.set_email('alias@somewhere.com');
userCreationInfo.set_loginName('DOMAIN\alias');
userCreationInfo.set_title('John');
this.oUser = oGroup.get_users().add(userCreationInfo);
clientContext.load(oUser);
clientContext.executeQueryAsync(Function.createDelegate(this, this.onQuerySucceeded), Function.createDelegate(this, this.onQueryFailed));
}
function onQuerySucceeded() {
alert(this.oUser.get_title() + " added.");
}
function onQueryFailed(sender, args) {
alert('Request failed. ' + args.get_message() + '\n' + args.get_stackTrace());
}
Para obtener más información y ejemplos sobre el trabajo con objetos de cliente dentro del contexto del modelo de objetos Silverlight de Microsoft SharePoint Foundation 2010, vea Uso del modelo de objetos Silverlight.
Vea también
Conceptos
Procedimiento para trabajar con roles
Procedimiento para interrumpir la herencia de asignación de roles
Autorización, usuarios y grupos
Introducción a la recuperación de datos
Instrucciones del modelo de objetos cliente
Tareas comunes de programación