Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.DirectoryServices;
- using System.Linq;
- using System.Text;
- using EleWise.ELMA.API;
- using EleWise.ELMA.Model.Common;
- using EleWise.ELMA.Model.Entities;
- using EleWise.ELMA.Model.Entities.ProcessContext;
- using EleWise.ELMA.Model.Managers;
- using EleWise.ELMA.Model.Services;
- using EleWise.ELMA.Model.Types.Settings;
- using EleWise.ELMA.Security.Extensions;
- using EleWise.ELMA.Security.Models;
- using EleWise.ELMA.Security.Services;
- using EleWise.ELMA.Services;
- using Context = EleWise.ELMA.Model.Entities.ProcessContext.P_LoadingUserGroupsLDAP;
- namespace EleWise.ELMA.Model.Scripts
- {
- /// <summary>
- /// Модуль сценариев процесса "Загрузка групп пользователей из LDAP"
- /// </summary>
- /// <example>
- /// <![CDATA[
- /// >>>>>>>>>>>>>>>ВАЖНАЯ ИНФОРМАЦИЯ!!!<<<<<<<<<<<<<<<
- /// Данный редактор создан для работы с PublicAPI.
- /// PublicAPI предназначен для разработки сценариев ELMA.
- /// Например, с помощью PublicAPI можно добавить комментарий к документу:
- /// //Загружаем документ
- /// var doc = PublicAPI.Docflow.Document.Load(56);
- /// //Добавляем комментарий
- /// PublicAPI.Docflow.Document.AddComment(doc, "тут ваш комментарий");
- ///
- /// Более подробно про PublicAPI вы можете узнать тут: http://www.elma-bpm.ru/kb/article-642ApiRoot.html
- ///
- /// Если же вам нужна более серьёзная разработка, выходящая за рамки PublicAPI, используйте
- /// сторонние редакторы кода, такие как SharpDevelop и VisualStudio.
- /// Информацию по запуску кода в стороннем редакторе вы можете найти тут:
- /// http://www.elma-bpm.ru/kb/article-837.html
- /// ]]>
- /// </example>
- public partial class P_LoadingUserGroupsLDAP_Scripts : EleWise.ELMA.Workflow.Scripts.ProcessScriptBase<Context>
- {
- /// <summary>
- /// LoadingUserGroupsLDAP
- /// </summary>
- /// <param name="context">Контекст процесса</param>
- public virtual void LoadingUserGroupsLDAP (Context context)
- {
- Iesi.Collections.Generic.ISet<User> ldapUsers = GetDirectoryEntry (context.UIDGruppy);
- if (context.isDelete) {
- foreach (var u in context.GruppaPoljzovateley.Users) {
- if (!ldapUsers.Contains (u))
- context.GruppaPoljzovateley.Users.Remove (u);
- }
- }
- foreach (var lu in ldapUsers) {
- if (!context.GruppaPoljzovateley.Users.Contains (lu))
- context.GruppaPoljzovateley.Users.Add (lu);
- }
- }
- public void AddUsersToAllUsers ()
- {
- var grAllUsers = EntityManager<UserGroup>.Instance.LoadOrNull (2L);
- var listUsers = EntityManager<User>.Instance.FindAll ();
- grAllUsers.Users.AddAll (listUsers);
- grAllUsers.Save ();
- }
- public virtual Iesi.Collections.Generic.ISet<User> GetDirectoryEntry (string groupUid)
- {
- Iesi.Collections.Generic.ISet<User> lstUsers = new Iesi.Collections.Generic.Set<User> ();
- string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
- DirectoryEntry searchRoot = new DirectoryEntry (DomainPath) {
- AuthenticationType = AuthenticationTypes.None,
- Username = "alfaleasing\\ldap",
- Password = "1q2w3e4R"
- };
- DirectorySearcher search = new DirectorySearcher (searchRoot);
- search.Filter = "(&(objectclass=organizationalPerson)(!(useraccountcontrol:1.2.840.113556.1.4.804:=2)))";
- SearchResult result;
- SearchResultCollection resultCol = search.FindAll ();
- if (resultCol.Count > 0) {
- for (int i = 0; i < resultCol.Count; i++) {
- result = resultCol [i];
- if (result.Properties ["sAMAccountName"].Count > 0 && result.Properties ["extensionAttribute7"].Count > 0 && result.Properties ["extensionAttribute7"] [0].ToString () == groupUid) {
- var objUser = PublicAPI.Portal.Security.User.LoadByLogin (((string)result.Properties ["sAMAccountName"] [0]));
- if (objUser != null)
- lstUsers.Add (objUser);
- }
- }
- }
- return lstUsers;
- }
- public void userlist ()
- {
- var userf = InterfaceActivator.Create<UserFilter> ();
- userf.ShowBlock = false;
- var userl = EntityManager<User>.Instance.Find (userf, null).ToList ();
- foreach (var us in userl) {
- var userdep = PublicAPI.Portal.Security.User.GetUserDepartments (us);
- var userposition = PublicAPI.Portal.Security.User.GetUserPositions (us);
- string str = us.UserName + ";" + us.FullName + ";";
- userdep = userdep.Reverse ();
- foreach (var ud in userdep) {
- str = str + ud.Name + ";";
- }
- for (int i = userdep.Count (); i < 4; i++) {
- str = str + ";";
- }
- foreach (var up in userposition) {
- str = str + up.Name + ";";
- }
- //str = str + "/n";
- Console.WriteLine (str);
- }
- }
- public void ADlist ()
- {
- string DomainPath = "LDAP://srv-dc01/OU=Users,OU=Alfaleasing,DC=inner,DC=alfaleasing,DC=ru";
- DirectoryEntry searchRoot = new DirectoryEntry (DomainPath) {
- AuthenticationType = AuthenticationTypes.None,
- Username = "alfaleasing\\ldap",
- Password = "1q2w3e4R"
- };
- DirectorySearcher search = new DirectorySearcher (searchRoot);
- search.Filter = "(&(objectclass=organizationalPerson)(!(useraccountcontrol:1.2.840.113556.1.4.804:=2)))";
- SearchResult result;
- SearchResultCollection resultCol = search.FindAll ();
- if (resultCol.Count > 0) {
- for (int i = 0; i < resultCol.Count; i++) {
- User us = null;
- result = resultCol [i];
- string str = null;
- if (result.Properties ["sAMAccountName"].Count > 0) {
- str = ((string)result.Properties ["sAMAccountName"] [0]) + ";";
- }
- if (result.Properties ["extensionAttribute2"].Count > 0) {
- str = str + ((string)result.Properties ["extensionAttribute2"] [0]) + ";";
- }
- else {
- str = str + ";";
- }
- if (result.Properties ["division"].Count > 0) {
- str = str + ((string)result.Properties ["division"] [0]) + ";";
- }
- else {
- str = str + ";";
- }
- if (result.Properties ["department"].Count > 0) {
- str = str + ((string)result.Properties ["department"] [0]) + ";";
- }
- else {
- str = str + ";";
- }
- if (result.Properties ["extensionAttribute4"].Count > 0) {
- str = str + ((string)result.Properties ["extensionAttribute4"] [0]) + ";";
- }
- else {
- str = str + ";";
- }
- if (result.Properties ["title"].Count > 0) {
- str = str + ((string)result.Properties ["title"] [0]) + ";";
- }
- else {
- str = str + ";";
- }
- if (result.Properties ["sAMAccountName"].Count > 0) {
- us = PublicAPI.Portal.Security.User.LoadByLogin (((string)result.Properties ["sAMAccountName"] [0]));
- if (us != null) {
- str = str + us.UserName + ";";
- var userdep = PublicAPI.Portal.Security.User.GetUserDepartments (us);
- var userposition = PublicAPI.Portal.Security.User.GetUserPositions (us);
- userdep = userdep.Reverse ();
- foreach (var ud in userdep) {
- str = str + ud.Name + ";";
- }
- for (int x = userdep.Count (); x < 4; x++) {
- str = str + ";";
- }
- //str = str + ";";
- foreach (var up in userposition) {
- str = str + up.Name + ";";
- }
- }
- }
- Console.WriteLine (str);
- }
- }
- }
- /// <summary>
- /// send_mess
- /// </summary>
- /// <param name="context">Контекст процесса</param>
- public virtual object send_mess (Context context)
- {
- string messageString = "Hello, world!";
- byte[] messageObject = Encoding.UTF8.GetBytes (messageString);
- return messageObject;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement