Overview

O SharePoint possui um serviço de sincronização de perfil de usuários com o AD e pode ser extendido para sincronizar com outras fontes de informações e com novos campos. Este recurso é muito importante para qualquer projeto SharePoint.

Mas e o desenvolvedor, ela terá acesso a essas informações no C#?

A resposta é sim, o objeto UserProfileManager irá nos ajudar a obter tudo o que precisamos. 

Solução

O primeiro passo é adicionar as referências abaixo:

  • C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Server.dll
  • C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI\Microsoft.Office.Server.UserProfiles.dll
    Adicionar os usings na classe:

using Microsoft.SharePoint;
using Microsoft.Office.Server.UserProfiles;
using Microsoft.SharePoint.Administration;

    e usar o código abaixo:

// Obtém a contexto de serviços
SPServiceContext context = SPServiceContext.GetContext(SPServiceApplicationProxyGroup.Default, SPSiteSubscriptionIdentifier.Default);
// Obtém o serviço de gerenciamento de perfil de usuários
UserProfileManager upm = new UserProfileManager(context, false);
// Obtém o perfil do usuário logado
UserProfile up = upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);

// Abaixo a leitura das propriedades foto, primeiro e último nome e departamento
string imageUrl = up[“PictureUrl”].Value as string;
string nome = string.Format(“{0} {1}”, up[“FirstName”].Value as string, up[“LastName”].Value as string);
string departamento = up[“Department”].Value as string;

Para obter outro usuário ao invés do usuáro logado, é só trocar a linha

// Obtém o perfil do usuário logado
UserProfile up = upm.GetUserProfile(SPContext.Current.Web.CurrentUser.LoginName);

por

UserProfile up = upm.GetUserProfile(@”dominio\logon”);

Anúncios