Все, что необходимо для управления пользователями в объектной модели SharePoint содержится в пространстве имен Microsoft.Office.Server.UserProfiles самый интересный для нас класс которого - UserProfileManager. Все, что нужно для его инициализации это передать в конструктор текущий контекст:
UserProfileManager userPM = new UserProfileManager(SPServiceContext.Current);
Все готово к работе. Теперь, например, можно создать нового пользователя:
string accountName = "DOMAIN\\newuser";
if (!userPM.UserExists(accountName))
{
userPM.CreateUserProfile(accountName);
UserProfile user = userPM.GetUserProfile(accountName);
//Установим отображаемое имя пользователя. По сути, PreferredName - это AD'шный DisplayName, но об этом ниже.
user["PreferredName"] = "Новый пользователь";
user.Commit();
}
А потом сказать, что он и Вася Пупки - коллеги, а Петя Васечкин - его руководитель:
UserProfile user = userPM.GetUserProfile("DOMAIN\\newuser");
UserProfile userColleague = userProfileManager.GetUserProfile("DOMAIN\\vpupkin");
if (!user.Colleagues.IsColleague(userProfileColleague.ID))
{
//если использовать Create, то коллега получит мейл, что его добавили.
//Если это не нужно, используйте CreateWithoutEmailNotification, сигнатура у него такая же.
user.Colleagues.Create(userColleague,
ColleagueGroupType.General,
//если нужно, тут указываем группу конфиденциальности, в которую поместить коллегу.
string.Empty,
//должен ли коллега быть частью рабочей группы
true,
Privacy.Public);
if (userPM.UserExists("DOMAIN\pvasechkin"))
{
user["Manager"].Clear();
user["Manager"].Add("DOMAIN\pvasechkin");
user.Commit();
}
}
Ну и в конце, создадим Васе персональный сайт:
UserProfile user = userPM.GetUserProfile(sAccount);
user.CreatePersonalSite();
Вообще же, класс UserProfile очень удобен для получения всевозможной информации о пользователе.