Advertisement
Guest User

Untitled

a guest
Oct 23rd, 2018
122
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.87 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.DirectoryServices;
  4. using System.Linq;
  5. using System.Text;
  6. using EleWise.ELMA.API;
  7. using EleWise.ELMA.Model.Common;
  8. using EleWise.ELMA.Model.Entities;
  9. using EleWise.ELMA.Model.Entities.ProcessContext;
  10. using EleWise.ELMA.Model.Managers;
  11. using EleWise.ELMA.Model.Services;
  12. using EleWise.ELMA.Model.Types.Settings;
  13. using EleWise.ELMA.Security.Extensions;
  14. using EleWise.ELMA.Security.Models;
  15. using EleWise.ELMA.Security.Services;
  16. using EleWise.ELMA.Services;
  17. using Context = EleWise.ELMA.Model.Entities.ProcessContext.P_LoadingUserGroupsLDAP;
  18.  
  19. namespace EleWise.ELMA.Model.Scripts
  20. {
  21. /// <summary>
  22. /// Модуль сценариев процесса "Загрузка групп пользователей из LDAP"
  23. /// </summary>
  24. /// <example>
  25. /// <![CDATA[
  26. /// >>>>>>>>>>>>>>>ВАЖНАЯ ИНФОРМАЦИЯ!!!<<<<<<<<<<<<<<<
  27. /// Данный редактор создан для работы с PublicAPI.
  28. /// PublicAPI предназначен для разработки сценариев ELMA.
  29. /// Например, с помощью PublicAPI можно добавить комментарий к документу:
  30. /// //Загружаем документ
  31. /// var doc = PublicAPI.Docflow.Document.Load(56);
  32. /// //Добавляем комментарий
  33. /// PublicAPI.Docflow.Document.AddComment(doc, "тут ваш комментарий");
  34. ///
  35. /// Более подробно про PublicAPI вы можете узнать тут: http://www.elma-bpm.ru/kb/article-642ApiRoot.html
  36. ///
  37. /// Если же вам нужна более серьёзная разработка, выходящая за рамки PublicAPI, используйте
  38. /// сторонние редакторы кода, такие как SharpDevelop и VisualStudio.
  39. /// Информацию по запуску кода в стороннем редакторе вы можете найти тут:
  40. /// http://www.elma-bpm.ru/kb/article-837.html
  41. /// ]]>
  42. /// </example>
  43. public partial class P_LoadingUserGroupsLDAP_Scripts : EleWise.ELMA.Workflow.Scripts.ProcessScriptBase<Context>
  44. {
  45. /// <summary>
  46. /// LoadingUserGroupsLDAP
  47. /// </summary>
  48. /// <param name="context">Контекст процесса</param>
  49. public virtual void LoadingUserGroupsLDAP (Context context)
  50. {
  51. Iesi.Collections.Generic.ISet<User> ldapUsers = GetDirectoryEntry (context.UIDGruppy);
  52. if (context.isDelete) {
  53. foreach (var u in context.GruppaPoljzovateley.Users) {
  54. if (!ldapUsers.Contains (u))
  55. context.GruppaPoljzovateley.Users.Remove (u);
  56. }
  57. }
  58. foreach (var lu in ldapUsers) {
  59. if (!context.GruppaPoljzovateley.Users.Contains (lu))
  60. context.GruppaPoljzovateley.Users.Add (lu);
  61. }
  62. }
  63.  
  64. public void AddUsersToAllUsers ()
  65. {
  66. var grAllUsers = EntityManager<UserGroup>.Instance.LoadOrNull (2L);
  67. var listUsers = EntityManager<User>.Instance.FindAll ();
  68. grAllUsers.Users.AddAll (listUsers);
  69. grAllUsers.Save ();
  70. }
  71.  
  72. public virtual Iesi.Collections.Generic.ISet<User> GetDirectoryEntry (string groupUid)
  73. {
  74. Iesi.Collections.Generic.ISet<User> lstUsers = new Iesi.Collections.Generic.Set<User> ();
  75. string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
  76. DirectoryEntry searchRoot = new DirectoryEntry (DomainPath) {
  77. AuthenticationType = AuthenticationTypes.None,
  78. Username = "alfaleasing\\ldap",
  79. Password = "1q2w3e4R"
  80. };
  81. DirectorySearcher search = new DirectorySearcher (searchRoot);
  82. search.Filter = "(&(objectclass=organizationalPerson)(!(useraccountcontrol:1.2.840.113556.1.4.804:=2)))";
  83. SearchResult result;
  84. SearchResultCollection resultCol = search.FindAll ();
  85. if (resultCol.Count > 0) {
  86. for (int i = 0; i < resultCol.Count; i++) {
  87. result = resultCol [i];
  88. if (result.Properties ["sAMAccountName"].Count > 0 && result.Properties ["extensionAttribute7"].Count > 0 && result.Properties ["extensionAttribute7"] [0].ToString () == groupUid) {
  89. var objUser = PublicAPI.Portal.Security.User.LoadByLogin (((string)result.Properties ["sAMAccountName"] [0]));
  90. if (objUser != null)
  91. lstUsers.Add (objUser);
  92. }
  93. }
  94. }
  95. return lstUsers;
  96. }
  97.  
  98. public void userlist ()
  99. {
  100. var userf = InterfaceActivator.Create<UserFilter> ();
  101. userf.ShowBlock = false;
  102. var userl = EntityManager<User>.Instance.Find (userf, null).ToList ();
  103. foreach (var us in userl) {
  104. var userdep = PublicAPI.Portal.Security.User.GetUserDepartments (us);
  105. var userposition = PublicAPI.Portal.Security.User.GetUserPositions (us);
  106. string str = us.UserName + ";" + us.FullName + ";";
  107. userdep = userdep.Reverse ();
  108. foreach (var ud in userdep) {
  109. str = str + ud.Name + ";";
  110. }
  111. for (int i = userdep.Count (); i < 4; i++) {
  112. str = str + ";";
  113. }
  114. foreach (var up in userposition) {
  115. str = str + up.Name + ";";
  116. }
  117. //str = str + "/n";
  118. Console.WriteLine (str);
  119. }
  120. }
  121.  
  122. public void ADlist ()
  123. {
  124. string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
  125. DirectoryEntry searchRoot = new DirectoryEntry (DomainPath) {
  126. AuthenticationType = AuthenticationTypes.None,
  127. Username = "alfaleasing\\ldap",
  128. Password = "1q2w3e4R"
  129. };
  130. DirectorySearcher search = new DirectorySearcher (searchRoot);
  131. search.Filter = "(&(objectclass=organizationalPerson)(!(useraccountcontrol:1.2.840.113556.1.4.804:=2)))";
  132. SearchResult result;
  133. SearchResultCollection resultCol = search.FindAll ();
  134. if (resultCol.Count > 0) {
  135. for (int i = 0; i < resultCol.Count; i++) {
  136. User us = null;
  137. result = resultCol [i];
  138. string str = null;
  139. if (result.Properties ["sAMAccountName"].Count > 0) {
  140. str = ((string)result.Properties ["sAMAccountName"] [0]) + ";";
  141. }
  142. if (result.Properties ["extensionAttribute2"].Count > 0) {
  143. str = str + ((string)result.Properties ["extensionAttribute2"] [0]) + ";";
  144. }
  145. else {
  146. str = str + ";";
  147. }
  148. if (result.Properties ["division"].Count > 0) {
  149. str = str + ((string)result.Properties ["division"] [0]) + ";";
  150. }
  151. else {
  152. str = str + ";";
  153. }
  154. if (result.Properties ["department"].Count > 0) {
  155. str = str + ((string)result.Properties ["department"] [0]) + ";";
  156. }
  157. else {
  158. str = str + ";";
  159. }
  160. if (result.Properties ["extensionAttribute4"].Count > 0) {
  161. str = str + ((string)result.Properties ["extensionAttribute4"] [0]) + ";";
  162. }
  163. else {
  164. str = str + ";";
  165. }
  166. if (result.Properties ["title"].Count > 0) {
  167. str = str + ((string)result.Properties ["title"] [0]) + ";";
  168. }
  169. else {
  170. str = str + ";";
  171. }
  172. if (result.Properties ["sAMAccountName"].Count > 0) {
  173. us = PublicAPI.Portal.Security.User.LoadByLogin (((string)result.Properties ["sAMAccountName"] [0]));
  174. if (us != null) {
  175. str = str + us.UserName + ";";
  176. var userdep = PublicAPI.Portal.Security.User.GetUserDepartments (us);
  177. var userposition = PublicAPI.Portal.Security.User.GetUserPositions (us);
  178. userdep = userdep.Reverse ();
  179. foreach (var ud in userdep) {
  180. str = str + ud.Name + ";";
  181. }
  182. for (int x = userdep.Count (); x < 4; x++) {
  183. str = str + ";";
  184. }
  185. //str = str + ";";
  186. foreach (var up in userposition) {
  187. str = str + up.Name + ";";
  188. }
  189. }
  190. }
  191. Console.WriteLine (str);
  192. }
  193. }
  194. }
  195.  
  196. /// <summary>
  197. /// send_mess
  198. /// </summary>
  199. /// <param name="context">Контекст процесса</param>
  200. public virtual object send_mess (Context context)
  201. {
  202. string messageString = "Hello, world!";
  203. byte[] messageObject = Encoding.UTF8.GetBytes (messageString);
  204. return messageObject;
  205.  
  206.  
  207. }
  208. }
  209. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement