2009-09-04 15 views
5

¿Cómo puedo averiguar programáticamente si el usuario actual pertenece a algún grupo en el sitio web de sharepoint?
Lo necesito porque me gustaría mostrar un contenido diferente para los usuarios que pertenecen a un grupo.Sharepoint: descubra si el usuario actual pertenece al grupo especificado

+0

El uso de los servicios de SharePoint API o en la web? –

+1

La pregunta ya se ha realizado aquí >> http://stackoverflow.com/questions/1063931/sharepoint-check-if-a-user-is-member-of-a-group – Flo

Respuesta

11

Me encontré con su publicación porque tengo (en mi humilde opinión) exactamente la misma pregunta, pero las respuestas parecen no coincidir de alguna manera con eso. Así que fui a buscar y encontré http://www.eggheadcafe.com/conversation.aspx?messageid=30460140&threadid=30420861:

SPWeb site = SPContext.Current.Web; 
SPGroup managerGroup = site.Groups["SP_Project_Manager"]; 
bool isManager = site.IsCurrentUserMemberOfGroup(managerGroup); 

A partir de 2013, de acuerdo con el comentario de s654m, la firma parece haber cambiado:

bool isManager = site.IsCurrentUserMemberOfGroup(managerGroup.ID); 
+0

Esto no parece funcionar en 2013 elementos web. .. esto sin embargo lo hace: SPWeb site = SPContext.Current.Web; SPGroup managerGroup = site.Groups ["SP_Project_Manager"]; bool isManager = site.IsCurrentUserMemberOfGroup (managerGroup.ID); – s654m

+0

@ s654m - gracias por el aviso, lo he incorporado en mi respuesta. – chiccodoro

+0

Loco, mi cuenta es la correcta y pertenece a mi grupo de administración, pero el booleano devuelto por 'site.IsCurrentUserMemberOfGroup (7)' siempre es falso. Por lo tanto, es la buena identificación y mostré al usuario actual, también es la buena. ¿Alguna pista? – Alex

3

Quizás code sample pos t en el Foro de ASP.NET ayuda.

Un método que podría utilizar

/// <summary> 
/// This private method get users by selected SPGroup object. 
/// </summary> 
/// <param name="group">SPGroup object</param> 

private void UsersList(SPGroup group) 
{ 
      foreach(SPUser singleUser in group.Users) 
      { 
         foreach(SPRole singleRole in singleUser.Roles) 
         { 
            _usersListCollection.Add(new UserListCollection(
            singleUser.LoginName,singleRole.Name,group.ParentWeb.Title)); 
         } 
      } 
} 

Buena suerte,
Henrik

0

Una manera de abordar este tipo de problemas es encontrar la inspiración en CodePlex. La calidad del código que la gente ha publicado suele ser muy buena.

Estoy seguro de que se puede encontrar la solución aquí: http://accesschecker.codeplex.com/

0

Hola, yo trabajo en SharePoint

Si tiene MOSS instalado es posible echar un vistazo a la funcionalidad 'público', que permite usted para apuntar a diferentes personas sin código.

Cuestiones relacionadas