Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
209
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 4.10 KB | None | 0 0
  1.         /// <summary>
  2.         /// GetADPhotos
  3.         /// </summary>
  4.         /// <param name="context">Контекст процесса</param>
  5.         public virtual void GetADPhotos (Context context)
  6.         {
  7.             //получим из AD фотографию пользователя. Атрибут - thumbnailPhoto
  8.             //похоже, что это последовательность байт
  9.             //сохранение выполняется через временный файл. Проверяем только привязанных к АД пользователей и у которых есть заполненное свойство в АД
  10.             //получаем настройки ldap системы
  11.             var manager = EleWise.ELMA.Services.Locator.GetServiceNotNull<EleWise.ELMA.Security.Services.IExternalMembershipManager> ();
  12.             var moduleSettings = manager.GetAllSettings ();
  13.             if (moduleSettings.Any ())
  14.             {
  15.                 //если нашли - берем первый, подразумеваем, что настроен только 1! Иначе надо доработать процесс
  16.                 var ldapSet = moduleSettings.FirstOrDefault ();
  17.                 var eS = manager.LoadSettings (ldapSet.InstanceUid) as EleWise.ELMA.IntegrationLdap.Settings.LdapExternalMembershipModuleSettings;
  18.                 //              context.Test += st.Name;
  19.                 //              context.Test += eS.LdapLogin;
  20.                 //              //context.Test += Environment.NewLine;
  21.                 //              //context.Test += eS.ModuleUid.ToString();
  22.                 //              context.Test += eS.InstanceUid.ToString(); //- authGuid
  23.                 //              context.Test += eS.LdapPassword;
  24.                 //формируем из параметров ldap строку для подключения
  25.                 var ldapFullPath = "LDAP://" + eS.LdapUrl + "/" + eS.LdapPath;
  26.                 Console.WriteLine (ldapFullPath);
  27.                 // формат строки string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
  28.                 //авторизуемся
  29.                 DirectoryEntry searchRoot = new DirectoryEntry (ldapFullPath) {
  30.                     AuthenticationType = AuthenticationTypes.None,
  31.                     Username = eS.LdapLogin,
  32.                     Password = eS.LdapPassword
  33.                 };
  34.                 //выбираем пользователей, у которых настроен провайдер авторизации
  35.                 var userList = EntityManager<User>.Instance.Find(p => p.Status==UserStatus.Active && p.AuthProviderGuid.ToString()!= "00000000-0000-0000-0000-000000000000");
  36.                 foreach(var userAd in userList)
  37.                 {
  38.                     if (userAd.Photo==null)
  39.                     {
  40.                         //если фото пустая - ищем в АД
  41.                        
  42.                         if (!string.IsNullOrEmpty (userAd.UserName))
  43.                         {
  44.                             //инициализируем поиск по имени пользователя AD
  45.                             DirectorySearcher search = new DirectorySearcher (searchRoot);
  46.                             search.Filter = String.Format ("(sAMAccountName={0})", userAd.UserName);
  47.                             SearchResult result;
  48.                             SearchResultCollection resultCol = search.FindAll ();
  49.                             if (resultCol.Count > 0)
  50.                             {
  51.                                 //если нашли - берем первый элемент результата
  52.                                 User us = null;
  53.                                 result = resultCol [0];
  54.                                 byte[] byteStr = null;
  55.                                 if (result.Properties ["thumbnailPhoto"].Count > 0)
  56.                                 {
  57.                                     //получаем строку-последовательность байтов
  58.                                     byteStr = (byte[])result.Properties ["thumbnailPhoto"] [0];
  59.                                     //начинаем изменять пользователя
  60.                                     //userCurrent.Save ();
  61.                                     //получаем имя временного файла
  62.                                     var tempFl = BinaryFile.CreateContentFilePath(@"c:\temp\tmpPhoto.jpg");
  63.                                     System.IO.File.WriteAllBytes(tempFl,byteStr);
  64.                                     var contractTemplate = new BinaryFile
  65.                                     {
  66.                                        ContentType = "image/JPEG",
  67.                                        Name = Path.GetFileName(@"c:\temp\tmpPhoto.jpg"),
  68.                                        ContentFilePath = tempFl,
  69.                                        CreateDate = DateTime.Now,
  70.                                     };
  71.                                     userAd.Photo=contractTemplate; 
  72.                                     userAd.Save();
  73.                                     Console.WriteLine(userAd.FullName);
  74.                                 }
  75.                             }
  76.                         }
  77.                     }
  78.                 }
  79.             }          
  80.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement