Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// <summary>
- /// GetADPhotos
- /// </summary>
- /// <param name="context">Контекст процесса</param>
- public virtual void GetADPhotos (Context context)
- {
- //получим из AD фотографию пользователя. Атрибут - thumbnailPhoto
- //похоже, что это последовательность байт
- //сохранение выполняется через временный файл. Проверяем только привязанных к АД пользователей и у которых есть заполненное свойство в АД
- //получаем настройки ldap системы
- var manager = EleWise.ELMA.Services.Locator.GetServiceNotNull<EleWise.ELMA.Security.Services.IExternalMembershipManager> ();
- var moduleSettings = manager.GetAllSettings ();
- if (moduleSettings.Any ())
- {
- //если нашли - берем первый, подразумеваем, что настроен только 1! Иначе надо доработать процесс
- var ldapSet = moduleSettings.FirstOrDefault ();
- var eS = manager.LoadSettings (ldapSet.InstanceUid) as EleWise.ELMA.IntegrationLdap.Settings.LdapExternalMembershipModuleSettings;
- // context.Test += st.Name;
- // context.Test += eS.LdapLogin;
- // //context.Test += Environment.NewLine;
- // //context.Test += eS.ModuleUid.ToString();
- // context.Test += eS.InstanceUid.ToString(); //- authGuid
- // context.Test += eS.LdapPassword;
- //формируем из параметров ldap строку для подключения
- var ldapFullPath = "LDAP://" + eS.LdapUrl + "/" + eS.LdapPath;
- Console.WriteLine (ldapFullPath);
- // формат строки string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
- //авторизуемся
- DirectoryEntry searchRoot = new DirectoryEntry (ldapFullPath) {
- AuthenticationType = AuthenticationTypes.None,
- Username = eS.LdapLogin,
- Password = eS.LdapPassword
- };
- //выбираем пользователей, у которых настроен провайдер авторизации
- var userList = EntityManager<User>.Instance.Find(p => p.Status==UserStatus.Active && p.AuthProviderGuid.ToString()!= "00000000-0000-0000-0000-000000000000");
- foreach(var userAd in userList)
- {
- if (userAd.Photo==null)
- {
- //если фото пустая - ищем в АД
- if (!string.IsNullOrEmpty (userAd.UserName))
- {
- //инициализируем поиск по имени пользователя AD
- DirectorySearcher search = new DirectorySearcher (searchRoot);
- search.Filter = String.Format ("(sAMAccountName={0})", userAd.UserName);
- SearchResult result;
- SearchResultCollection resultCol = search.FindAll ();
- if (resultCol.Count > 0)
- {
- //если нашли - берем первый элемент результата
- User us = null;
- result = resultCol [0];
- byte[] byteStr = null;
- if (result.Properties ["thumbnailPhoto"].Count > 0)
- {
- //получаем строку-последовательность байтов
- byteStr = (byte[])result.Properties ["thumbnailPhoto"] [0];
- //начинаем изменять пользователя
- //userCurrent.Save ();
- //получаем имя временного файла
- var tempFl = BinaryFile.CreateContentFilePath(@"c:\temp\tmpPhoto.jpg");
- System.IO.File.WriteAllBytes(tempFl,byteStr);
- var contractTemplate = new BinaryFile
- {
- ContentType = "image/JPEG",
- Name = Path.GetFileName(@"c:\temp\tmpPhoto.jpg"),
- ContentFilePath = tempFl,
- CreateDate = DateTime.Now,
- };
- userAd.Photo=contractTemplate;
- userAd.Save();
- Console.WriteLine(userAd.FullName);
- }
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement