Beispiel #1
0
        void Connect()
        {
            ///172.22.12.110
            ADHelper _ADHelper = new ADHelper("LDAP://PC1.Pelsoft.es/DC=Pelsoft,DC=ar", "moviedo", "xxxxxx");

            _ADHelper.User_Get_ByName("moviedo");

            _ADHelper.User_ChangeEmail("moviedo","*****@*****.**");

        }
Beispiel #2
0
        public static string OUPathToDN(string[] parts, int level)
        {
            if (level < 1 || level > parts.Length)
            {
                throw new ArgumentOutOfRangeException("level");
            }

            StringBuilder strB = new StringBuilder();

            for (int i = level - 1; i >= 0; i--)
            {
                if (strB.Length > 0)
                {
                    strB.Append(",");
                }

                strB.Append("OU=" + ADHelper.EscapeString(parts[i]));
            }

            return(strB.ToString());
        }
Beispiel #3
0
        public static List <ADObjectWrapper> FindAllChildrenUser(this DirectoryEntry entry)
        {
            List <ADObjectWrapper> result = new List <ADObjectWrapper>();

            ADHelper           adHelper  = SynchronizeContext.Current.ADHelper;
            ADSearchConditions condition = new ADSearchConditions(SearchScope.Subtree);

            condition.PageSize = 1000;

            List <SearchResult> searchList = adHelper.ExecuteSearch(entry,
                                                                    ADSearchConditions.GetFilterByMask(ADSchemaType.Users),
                                                                    condition,
                                                                    ADUserObjNeededProperties);

            foreach (SearchResult searchResult in searchList)
            {
                result.Add(searchResult.ToADOjectWrapper());
            }

            return(result);
        }
Beispiel #4
0
        private static Dictionary <string, Models.TeamModel> UpdateTeams(string dir, Dictionary <string, Models.UserModel> users)
        {
            var teams    = Pre600Functions.LoadContent <Pre600TeamModel>(dir);
            var newTeams = new Dictionary <string, Models.TeamModel>();

            foreach (var teamitem in teams)
            {
                var team    = teamitem.Value;
                var newteam = new Models.TeamModel();
                newteam.Name        = team.Name;
                newteam.Description = team.Description;
                newteam.Id          = Guid.NewGuid();

                try
                {
                    GroupPrincipal group;
                    using (var pc = ADHelper.GetPrincipalGroup(ActiveDirectorySettings.TeamNameToGroupNameMapping[team.Name], out group))
                    {
                        newteam.Id = group.Guid.Value;
                    }
                }
                catch (Exception ex)
                {
                    Trace.TraceError("Failed to acquire group GUID - adding new.");
                    Trace.TraceError(ex.Message);
                }


                var members = new List <Models.UserModel>();
                foreach (var member in team.Members)
                {
                    members.Add(users[member]);
                }
                newteam.Members = members.ToArray();

                ADBackend.Instance.Teams.Add(newteam);
                newTeams[team.Name] = newteam;
            }
            return(newTeams);
        }
Beispiel #5
0
        public void Rename_user()
        {
            var testLogin    = "******";
            var newTestLogin = (new Random().Next(30000, 40000)).ToString();

            var user = ADHelper.FindDirectoryEntry(testLogin);

            Assert.IsNotNull(user, "Не найдена запись в AD, хотя должна быть");

            ADHelper.RenameUser(testLogin, newTestLogin);

            // Переименовываем и проверяем что по старому имени ничего не найдем, а по новому найдем
            user = ADHelper.FindDirectoryEntry(testLogin);
            Assert.IsNull(user, "Нашли запись в AD, хотя не должны были");
            user = ADHelper.FindDirectoryEntry(newTestLogin);
            Assert.IsNotNull(user, "Не найдена запись в AD, хотя должна быть");

            // Переименовываем обратно
            ADHelper.RenameUser(newTestLogin, testLogin);
            user = ADHelper.FindDirectoryEntry(testLogin);
            Assert.IsNotNull(user, "Не найдена запись в AD, хотя должна быть");
        }
Beispiel #6
0
        public void Add_accessible_computer()
        {
            var computers = new[] { "FMS", "SOLO" };

            var entry = FindDirectoryEntry("KvasovT");

            if (entry.Properties["userWorkstations"].Count > 0)
            {
                entry.Properties["userWorkstations"].Remove(entry.Properties["userWorkstations"][0]);
                entry.CommitChanges();
            }

            var accessibleComputers = ADHelper.GetAccessibleComputers("KvasovT");

            Assert.That(accessibleComputers.Count, Is.EqualTo(0));

            ADHelper.SetAccessibleComputer("KvasovT", computers);

            // Пробуем добавить FMS, но он не должен добавиться т.к. доступ к нему уже есть
            accessibleComputers = ADHelper.GetAccessibleComputers("KvasovT");
            Assert.That(accessibleComputers.Count, Is.EqualTo(computers.Length));
        }
        private static void condition_ADSearchCompleted(DirectorySearcher searcher, List <SearchResult> resultList, object objContext)
        {
            DirectoryEntry entry = searcher.SearchRoot;

            AD2DBTransferContext context = (AD2DBTransferContext)objContext;
            ADHelper             helper  = context.InitialParams.DirectoryHelper;

            string parentGuid = helper.GetPropertyStrValue("objectGuid", entry);

            Dictionary <string, string> guidGlobalSortDict = GetOriginalChildrenGlobalSortDictionary(parentGuid, context);

            resultList.Sort((sr1, sr2) =>
            {
                string guid1 = helper.GetSearchResultPropertyStrValue("objectGuid", sr1);
                string guid2 = helper.GetSearchResultPropertyStrValue("objectGuid", sr2);

                return(string.Compare(
                           guidGlobalSortDict.GetValue(guid1, "ZZZZZZ"),
                           guidGlobalSortDict.GetValue(guid2, "ZZZZZZ"),
                           true));
            });
        }
Beispiel #8
0
        private void UpdateRoles()
        {
            foreach (var role in Roles.Select(x => new { x.Id, Name = x.Name }).Where(x => !ActiveDirectorySettings.RoleNameToGroupNameMapping.Keys.Contains(x.Name, StringComparer.OrdinalIgnoreCase)))
            {
                Roles.Remove(role.Id);
            }


            foreach (string roleName in ActiveDirectorySettings.RoleNameToGroupNameMapping.Keys)
            {
                GroupPrincipal group;
                var            pc = ADHelper.GetPrincipalGroup(ActiveDirectorySettings.RoleNameToGroupNameMapping[roleName], out group);

                RoleModel roleModel = new RoleModel()
                {
                    Id      = group.Guid.Value,
                    Name    = roleName,
                    Members = group.GetMembers(true).Where(x => x is UserPrincipal).Select(x => x.Guid.Value).ToArray()
                };
                Roles.AddOrUpdate(roleModel);
            }
        }
Beispiel #9
0
        public static List <ADObjectWrapper> SearchChildren(ADObjectWrapper adObject)
        {
            List <ADObjectWrapper> result = new List <ADObjectWrapper>();

            ADHelper           adHelper  = SynchronizeContext.Current.ADHelper;
            ADSearchConditions condition = new ADSearchConditions(SearchScope.OneLevel);

            using (DirectoryEntry parentEntry = adHelper.NewEntry(adObject.DN))
            {
                List <SearchResult> searchList = adHelper.ExecuteSearch(parentEntry,
                                                                        ADSearchConditions.GetFilterByMask(ADSchemaType.Users | ADSchemaType.Organizations | ADSchemaType.Groups),
                                                                        condition,
                                                                        ADObjNeededProperties);

                foreach (var searchResult in searchList)
                {
                    result.Add(searchResult.ToADOjectWrapper());
                }
            }

            return(result);
        }
        private void UpdateTeams()
        {
            foreach (var team in Teams.Select(x => new { x.Id, Name = x.Name }).Where(x => !ActiveDirectorySettings.TeamNameToGroupNameMapping.Keys.Contains(x.Name, StringComparer.OrdinalIgnoreCase)))
            {
                Teams.Remove(team.Id);
            }

            if (MembershipService == null)
            {
                MembershipService = new ADMembershipService();
            }

            foreach (string teamName in ActiveDirectorySettings.TeamNameToGroupNameMapping.Keys)
            {
                string groupName = ActiveDirectorySettings.TeamNameToGroupNameMapping[teamName];

                Log.Verbose("AD: Updating team {TeamName} (groupName {GroupName})", teamName, groupName);
                try
                {
                    GroupPrincipal group;
                    using (var pc = ADHelper.GetPrincipalGroup(groupName, out group))
                    {
                        TeamModel teamModel = new TeamModel()
                        {
                            Id          = group.Guid.Value,
                            Description = group.Description,
                            Name        = teamName,
                            Members     = group.GetMembers(true).Select(x => MembershipService.GetUserModel(x.Guid.Value)).Where(o => o != null).ToArray()
                        };
                        Teams.AddOrUpdate(teamModel);
                        Log.Verbose("AD: Updated team {TeamName} OK", teamName);
                    }
                }
                catch (Exception ex)
                {
                    Log.Error(ex, "AD: Failed to update team {TeamName}", teamName);
                }
            }
        }
Beispiel #11
0
        public static SearchResult GetSearchResultByLogonName(string logonName, ADSchemaType schemaType)
        {
            ADHelper           adHelper  = SynchronizeContext.Current.ADHelper;
            ADSearchConditions condition = new ADSearchConditions(SearchScope.Subtree);

            condition.SizeLimit = 1;
            string filter = string.Empty;

            string[] neededProperties = GetNeededProperties(schemaType);

            filter = string.Format("(samAccountName={0})", ADHelper.EscapeValueForLdapQuery(logonName));

            using (DirectoryEntry parentEntry = adHelper.GetRootEntry())
            {
                var searchList = adHelper.ExecuteSearch(parentEntry,
                                                        filter,
                                                        condition,
                                                        neededProperties);

                return(searchList.FirstOrDefault());
            }
        }
Beispiel #12
0
        public ActionResult CreateADUser()
        {
            if ((!Request.IsAuthenticated) || !(MembershipService is EFMembershipService))
            {
                return(RedirectToAction("Unauthorized", "Home"));
            }

            var credentials = User.Username();
            var adUser      = ADHelper.GetUserPrincipal(credentials);

            if (adUser != null)
            {
                //TODO Is this legit? Could an AD user ever not have a Guid
                var userId = adUser.Guid.GetValueOrDefault(Guid.NewGuid());
                if (MembershipService.CreateUser(credentials, Guid.NewGuid().ToString(), adUser.GivenName, adUser.Surname, adUser.EmailAddress, userId))
                {
                    if (MembershipService is EFMembershipService)
                    {
                        var efms = MembershipService as EFMembershipService;
                        // 2 because we just added the user and there is the default admin user.
                        if ((AuthenticationSettings.ImportWindowsAuthUsersAsAdmin || efms.UserCount() == 2))
                        {
                            var id = MembershipService.GetUserModel(credentials).Id;
                            RoleProvider.AddUserToRoles(id, new string[] { Definitions.Roles.Administrator });
                        }
                    }
                    return(RedirectToAction("Index", "Repository"));
                }
                else
                {
                    ModelState.AddModelError("Username", Resources.Account_Create_AccountAlreadyExists);
                    return(RedirectToAction("Index"));
                }
            }
            else
            {
                return(RedirectToAction("Unauthorized", "Home"));
            }
        }
Beispiel #13
0
        public static UserAttributesType TranslateUserAttributes(SearchResult sr)
        {
            UserAttributesType unspecified = UserAttributesType.Unspecified;

            if (ADHelper.GetInstance().GetSearchResultPropertyStrValue("x121Address", sr) == "y")
            {
                unspecified |= UserAttributesType.DangZuChengYuan;
            }
            if (ADHelper.GetInstance().GetSearchResultPropertyStrValue("primaryTelexNumber", sr) == "y")
            {
                unspecified |= UserAttributesType.ShuGuanGanBu;
            }
            if (ADHelper.GetInstance().GetSearchResultPropertyStrValue("co", sr) == "y")
            {
                unspecified |= UserAttributesType.JiaoLiuGanBu;
            }
            if (ADHelper.GetInstance().GetSearchResultPropertyStrValue("primaryTelexNumber", sr) == "y")
            {
                unspecified |= UserAttributesType.JieDiaoGanBu;
            }
            return(unspecified);
        }
        private static void InsertOrganizations(SearchResult sr, AD2DBTransferContext context)
        {
            //开始添加AD的比较数据
            ADHelper  helper   = context.InitialParams.DirectoryHelper;
            DataTable oguTable = context.ADData.Tables["ORGANIZATIONS"];

            DataRow dr = oguTable.NewRow();

            dr["GUID"]        = helper.GetSearchResultPropertyStrValue("objectGuid", sr);
            dr["PARENT_GUID"] = context.ParentGuid;

            string name = helper.GetSearchResultPropertyStrValue("name", sr);

            dr["OBJ_NAME"] = name;

            string displayName = helper.GetSearchResultPropertyStrValue("displayName", sr);

            displayName        = string.IsNullOrEmpty(displayName) ? name : displayName;
            dr["DISPLAY_NAME"] = NormalizeName(displayName);

            dr["DESCRIPTION"]   = helper.GetSearchResultPropertyStrValue("description", sr);
            dr["ALL_PATH_NAME"] = AD2DBHelper.TranslateDNToFullPath(helper.GetSearchResultPropertyStrValue("distinguishedName", sr));

            string innerSort    = GetInnerSortAndIncCounter(context);
            string originalSort = context.ParentOriginalSort + innerSort;

            dr["ORIGINAL_SORT"]    = originalSort;
            dr["GLOBAL_SORT"]      = originalSort;
            dr["RANK_CODE"]        = AD2DBHelper.ConvertDepartmentRankCode(helper.GetSearchResultPropertyStrValue("physicalDeliveryOfficeName", sr)).ToString();
            dr["CHILDREN_COUNTER"] = 0;
            dr["INNER_SORT"]       = innerSort;
            dr["ORG_TYPE"]         = (int)AD2DBHelper.TranslateDeptTypeDefine(sr);
            dr["ORG_CLASS"]        = (int)AD2DBHelper.TranslateDeptClass(helper.GetSearchResultPropertyStrValue("c", sr));
            dr["STATUS"]           = 1;
            dr["SEARCH_NAME"]      = name + " " + NormalizeName(displayName);

            oguTable.Rows.Add(dr);
        }
Beispiel #15
0
        private void FillUserInfo(string account)
        {
            DataSet ds = DAL.User.GetUserByAccount(account);

            if (ds.Tables[0].Rows.Count > 0)//数据库中已有该账户信息,则直接从数据库中读取
            {
                DataRow dr = ds.Tables[0].Rows[0];
                //string[] drcolStrings = drRow..ToString();
                txtName.Text = dr["Name"].ToString();
                //txtId.Text = dr["IDCard"].ToString();
                rblSex.SelectedValue = dr["Sex"].ToString();
                txtTelephone.Text    = dr["Telephone"].ToString();
                txtEmail.Text        = dr["Email"].ToString();
                if (dr["OrgID"] != null)
                {
                    ddlCity.SelectedValue = dr["OrgID"].ToString();
                }
            }
            else//该用户信息只在AD中存在,用户信息从AD中读取
            {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    DirectoryEntry adUser = ADHelper.GetDirectoryEntryByAccount(account);
                    if (adUser != null)
                    {
                        txtName.Text = adUser.Properties["displayName"][0].ToString();
                        if (adUser.Properties.Contains("telephoneNumber"))
                        {
                            txtTelephone.Text = adUser.Properties["telephoneNumber"][0].ToString();
                        }
                        if (adUser.Properties.Contains("mail"))
                        {
                            txtEmail.Text = adUser.Properties["mail"][0].ToString();
                        }
                    }
                });
            }
        }
Beispiel #16
0
        private void DeleteAdUser()
        {
            string account   = txtAccount.Text.Trim().Replace(" ", "");
            string lgAccount = Common.GetAccount(SPContext.Current.Web.CurrentUser.LoginName);
            bool   retValue  = true;

            SPSecurity.RunWithElevatedPrivileges(delegate()
            {
                retValue = ADHelper.DeleteAdUser(account);
            });

            if (retValue)//AD修改成功,然后对数据库进行操作
            {
                DataSet ds = DAL.User.GetUserByAccount(account);
                if (ds.Tables[0].Rows.Count > 0)//在数据库中找到了当前用户的记录,准备更新操作
                {
                    DataRow dr = ds.Tables[0].Rows[0];
                    dr["Flag"] = 0;
                    DAL.User.UpdateUser(dr);//更新当前用户记录
                }
                SendEmail();
                if (account == lgAccount)//登陆用户和删除用户是同一用户
                {
                    Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script defer>alert('删除用户成功,即将关闭');window.opener=null;window.close();</script>");
                }
                else
                {
                    //Page.ClientScript.RegisterStartupScript(this.GetType(), "message", "<script defer>alert('删除用户成功');</script>");
                    ClearControl();
                    lblMsg.Text = "删除用户成功";
                }
            }
            else
            {
                lblMsg.Text = "删除用户失败!";
            }
            //Common.ShowMessage(Page, this.GetType(), "删除用户失败!");
        }
        public void Edit(uint id, [SmartBinder(Expect = "filter.Types")] MessageQuery filter)
        {
            var user = DbSession.Load <User>(id);

            NHibernateUtil.Initialize(user.RootService);
            PropertyBag["CiUrl"] = Properties.Settings.Default.ClientInterfaceUrl + "auth/logon.aspx";
            PropertyBag["user"]  = user;
            if (user.Client != null)
            {
                PropertyBag["client"] = user.Client;
            }

            PropertyBag["CallLogs"]         = UnresolvedCall.LastCalls;
            PropertyBag["authorizationLog"] = user.Logs;
            PropertyBag["userInfo"]         = ADHelper.GetADUserInformation(user);
            PropertyBag["EmailContactType"] = ContactType.Email;
            PropertyBag["PhoneContactType"] = ContactType.Phone;

            PropertyBag["filter"]   = filter;
            PropertyBag["messages"] = user.GetAuditRecord(DbSession, filter);

            if (user.ContactGroup != null && user.ContactGroup.Contacts != null)
            {
                PropertyBag["ContactGroup"] = user.ContactGroup;
            }

            if (user.RootService.Disabled || user.Enabled == false)
            {
                PropertyBag["enabled"] = false;
            }
            else
            {
                PropertyBag["enabled"] = true;
            }

            Sort.Make(this);
        }
Beispiel #18
0
        public responseResult Acceder(string email, string password)
        {
            var result = new responseResult();

            try
            {
                if ((email != null) && (password != null))
                {
                    if (ad.IsAuthenticated(email, password))
                    {
                        ADHelper helper = new ADHelper(email, password, this.domain);

                        string groupDN = helper.GetGroupDN(grupo);
                        string userDN  = helper.GetUserDN("GrpSegTMbasico\\" + email);

                        if (helper.isUserInGroup(userDN, groupDN))
                        {
                            SessionHelper.AddUserToSession(email.ToString());
                            result.response = true;
                        }
                        else
                        {
                            result.SetResponse(false, "No tiene permiso para usar esta aplicación");
                        }
                    }
                    else
                    {
                        result.SetResponse(false, "Favor verificar usuario y contraseña");
                    }
                }
                return(result);
            }
            catch (Exception ex)
            {
                throw;
            }
        }
Beispiel #19
0
        public Company GetCompanyInfo(string loginName)
        {
            Company company = new Company();

            if (loginName == "")
            {
                return(company);
            }

            loginName = loginName.Split('\\')[1];

            var de = ADHelper.GetDirectoryEntryByAccount(loginName);

            if (de == null)
            {
                BaseComponent.Error("LoginName:" + loginName + " cannot find in AD");
                return(company);
            }
            //TODO:
            company.Costomer = ADHelper.GetProperty(de, "company");
            //company.linkMan = ADHelper.GetProperty(de, "givenName");
            company.phone = ADHelper.GetProperty(de, "mobile");
            return(company);
        }
        public void Run()
        {
            FileInfo     logfile = new FileInfo(Environment.CurrentDirectory.ToString() + "/log.txt");
            StreamWriter write   = null;

            if (logfile.Exists)
            {
                write = logfile.AppendText();
                write.WriteLine("---------------------------------------------------------------------------------------");
            }
            else
            {
                write = logfile.CreateText();
            }

            write.WriteLine("用户名,导入结果,操作时间,失败原因");

            List <Picture> pictures        = new List <Picture>();
            List <Picture> deletedPictures = new List <Picture>();
            Database       database        = null;

            try
            {
                #region 读取新加用户的图片的数据库信息
                database = DbHelper.GetDBDatabase("HB2008");
                string sql = @"select top 1000 c.LOGIN_NAME, a.FILE_NAME, a.CONTENT_DATA from WF.MATERIAL_CONTENT a join wf.IMAGE b " +
                             "on a.CONTENT_ID = b.ID join wf.INITIALIZATION_USER_AD_IMAGE c on b.RESOURCE_ID = c.PICTURE_ID where a.CLASS = 'HR_PHOTO' and c.UpdateStatus = 0 and c.VALIDSTATUS = 1  ";

                DbDataReader dr = database.ExecuteReader(CommandType.Text, sql);
                while (dr.Read())
                {
                    Picture pic = new Picture();

                    pic.LOGIN_NAME   = dr["LOGIN_NAME"].ToString();
                    pic.FILE_NAME    = dr["FILE_NAME"] != null ? dr["FILE_NAME"].ToString() : string.Empty;
                    pic.CONTENT_DATA = (byte[])dr["CONTENT_DATA"];
                    pictures.Add(pic);
                }
                dr.Close();
                #endregion

                #region 读取删除用户的图片的数据库信息
                sql = @"select LOGIN_NAME from WF.INITIALIZATION_USER_AD_IMAGE where VALIDSTATUS = 0 and UpdateStatus = 0  ";

                dr = database.ExecuteReader(CommandType.Text, sql);
                while (dr.Read())
                {
                    Picture pic = new Picture();

                    pic.LOGIN_NAME = dr["LOGIN_NAME"].ToString();
                    deletedPictures.Add(pic);
                }
                dr.Close();
                #endregion
            }
            catch
            {
                lblResult.Text = "失败";
                pictures.Clear();
                deletedPictures.Clear();
                write.WriteLine("SQL Server 服务器异常");
                return;
            }

            #region 向AD中写入图片信息
            foreach (Picture pic in pictures)
            {
                DirectoryEntry      entity = null;
                List <SearchResult> result = null;
                try
                {
                    var exFilter = new ExtraFilter();
                    exFilter.UserFilter = "samAccountName=" + pic.LOGIN_NAME;
                    string             filter    = ADSearchConditions.GetFilterByMask(ADSchemaType.Users, exFilter);
                    ADSearchConditions conditons = new ADSearchConditions();
                    conditons.Scope = SearchScope.Subtree;
                    ServerInfo           serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo();
                    MCS.Library.ADHelper adHelper   = ADHelper.GetInstance(serverInfo);
                    result = adHelper.ExecuteSearch(adHelper.GetRootEntry(), filter, conditons, "distinguishedName");
                    if (result.Count < 1)
                    {
                        write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + ",AD中找不到该账号");
                    }
                    else
                    {
                        #region 处理逻辑
                        entity = adHelper.NewEntry(result[0].Properties["distinguishedName"][0].ToString());
                        if (pic.CONTENT_DATA.Length < 102400)
                        {
                            if (entity.Properties.Contains("thumbnailPhoto"))
                            {
                                entity.Properties["thumbnailPhoto"][0] = pic.CONTENT_DATA;
                            }
                            else
                            {
                                entity.Properties["thumbnailPhoto"].Add(pic.CONTENT_DATA);
                            }
                        }
                        else
                        {
                            ImageHelper imgHelp = new ImageHelper(pic.CONTENT_DATA);
                            double      percent = 80000.00 / pic.CONTENT_DATA.Length;

                            if (pic.FILE_NAME != string.Empty && pic.FILE_NAME != null)
                            {
                                if (pic.FILE_NAME.Split('.').Length > 1)
                                {
                                    if (pic.FILE_NAME.Split('.')[1].ToLower() == "jpg" || pic.FILE_NAME.Split('.')[1].ToLower() == "gif" || pic.FILE_NAME.Split('.')[1].ToLower() == "png" || pic.FILE_NAME.Split('.')[1].ToLower() == "bmp")
                                    {
                                        if (entity.Properties.Contains("thumbnailPhoto"))
                                        {
                                            entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage(pic.FILE_NAME.Split('.')[1].ToLower(), percent);
                                        }
                                        else
                                        {
                                            entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage(pic.FILE_NAME.Split('.')[1].ToLower(), percent));
                                        }
                                    }
                                    else
                                    {
                                        if (entity.Properties.Contains("thumbnailPhoto"))
                                        {
                                            entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent);
                                        }
                                        else
                                        {
                                            entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent));
                                        }
                                    }
                                }
                                else
                                {
                                    if (entity.Properties.Contains("thumbnailPhoto"))
                                    {
                                        entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent);
                                    }
                                    else
                                    {
                                        entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent));
                                    }
                                }
                            }
                            else
                            {
                                if (entity.Properties.Contains("thumbnailPhoto"))
                                {
                                    entity.Properties["thumbnailPhoto"][0] = imgHelp.GetThumbnailImage("jpg", percent);
                                }
                                else
                                {
                                    entity.Properties["thumbnailPhoto"].Add(imgHelp.GetThumbnailImage("jpg", percent));
                                }
                            }
                        }
                        #endregion
                        entity.CommitChanges();
                        entity.Close();

                        string sql = @"update WF.INITIALIZATION_USER_AD_IMAGE set UPDATESTATUS = 1 , UPDATETIME = GETDATE() where LOGIN_NAME = '" + pic.LOGIN_NAME + "' ";
                        database.ExecuteNonQuery(CommandType.Text, sql);
                        write.WriteLine(pic.LOGIN_NAME + ",成功," + DateTime.Now + ",");
                    }
                }
                catch (Exception ex)
                {
                    if (entity != null)
                    {
                        entity.Close();
                    }

                    lblResult.Text = "失败";
                    write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + "," + ex.Message);
                }
            }

            foreach (Picture pic in deletedPictures)
            {
                DirectoryEntry      entity = null;
                List <SearchResult> result = null;
                try
                {
                    var exFilter = new ExtraFilter();
                    exFilter.UserFilter = "samAccountName=" + pic.LOGIN_NAME;
                    string             filter    = ADSearchConditions.GetFilterByMask(ADSchemaType.Users, exFilter);
                    ADSearchConditions conditons = new ADSearchConditions();
                    conditons.Scope = SearchScope.Subtree;
                    ServerInfo           serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo();
                    MCS.Library.ADHelper adHelper   = ADHelper.GetInstance(serverInfo);
                    result = adHelper.ExecuteSearch(adHelper.GetRootEntry(), filter, conditons, "distinguishedName");
                    if (result.Count < 1)
                    {
                        write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + ",AD中找不到该账号");
                    }
                    else
                    {
                        entity = adHelper.NewEntry(result[0].Properties["distinguishedName"][0].ToString());

                        if (entity.Properties.Contains("thumbnailPhoto"))
                        {
                            entity.Properties["thumbnailPhoto"].Clear();
                        }
                        entity.CommitChanges();
                        entity.Close();

                        string sql = @"update WF.INITIALIZATION_USER_AD_IMAGE set UPDATESTATUS = 1, UPDATETIME = GETDATE() where LOGIN_NAME = '" + pic.LOGIN_NAME + "' ";
                        database.ExecuteNonQuery(CommandType.Text, sql);
                        write.WriteLine(pic.LOGIN_NAME + ",成功," + DateTime.Now + ",");
                    }
                }
                catch (Exception ex)
                {
                    if (entity != null)
                    {
                        entity.Close();
                    }

                    lblResult.Text = "失败";
                    write.WriteLine(pic.LOGIN_NAME + ",失败," + DateTime.Now + "," + ex.Message);
                }
            }

            write.Close();
            #endregion

            pictures.Clear();
            deletedPictures.Clear();

            if (lblResult.Text == "失败")
            {
                lblResult.Text = "失败,请查看日志记录";
            }
            else
            {
                lblResult.Text = "成功";
            }
        }
Beispiel #21
0
        private static void ProcessBatch(ADToPermissionCenterSynchronizer context, EntityMappingCollection mappings, ADHelper adHelper, int startIndex, int size)
        {
            string[] propertiesToGet = { "sAMAccountName", "mail", "msRTCSIP-PrimaryUserAddress" };

            IEnumerable <SearchResult> adResults = SynchronizeHelper.GetSearchResultsByPropertyValues(adHelper, "sAMAccountName", mappings.ToKeyArray("CodeName", startIndex, size), ADSchemaType.Users, propertiesToGet, size);

            Dictionary <string, SimpleUser> codeNameDict = mappings.ToCodeNameDictionary(startIndex, size);

            List <SimpleUser> changes = DiscoverChanges(codeNameDict, adResults);

            ApplyChanges(changes, context);
        }
Beispiel #22
0
        private static DirectoryEntry WhatEverNewEntry(IOguObject oguObject, DirectoryEntry parentEntry)
        {
            try
            {
                return(parentEntry.Children.Add(GetADTargetName(oguObject), ((ADSchemaType)oguObject.ObjectType).ToObjectClass()));
            }
            catch (DirectoryServicesCOMException cex)
            {
                if (cex.ErrorCode == -2147019886)
                {
                    string demoName = oguObject.Name + DateTime.Now.ToString("yyyyMMddHHmmss") + SynchronizeContext.Current.DelayActions.Count;
                    var    demo     = parentEntry.Children.Add(oguObject.ObjectType.SchemaTypeToPrefix() + "=" + ADHelper.EscapeString(demoName), ((ADSchemaType)oguObject.ObjectType).ToObjectClass());
                    // 重名
                    SynchronizeContext.Current.DelayActions.Add(new DelayRenameAction(oguObject, demo.NativeGuid));

                    return(demo);
                }
                else
                {
                    throw;
                }
            }
        }
Beispiel #23
0
        internal static void LoadDomain(string domainName)
        {

            _ADHelper = new ADHelper(domainName, "SqlServices");

        }
        public void DoPasswordChange(uint userId,
                                     string emailsForSend,
                                     bool isSendClientCard,
                                     bool isFree,
                                     bool changeLogin,
                                     string reason,
                                     string[] phonesForSendToUserArray,
                                     string[] phonesForSendToAdminArray)
        {
            var user = DbSession.Load <User>(userId);

            user.CheckLogin();

            var password = user.ChangePassword(Session);

            if (changeLogin)
            {
                ADHelper.RenameUser(user.Login, user.Id.ToString());
                user.Login = user.Id.ToString();
            }
            user.ResetUin();

            var passwordChangeLog = new PasswordChangeLogEntity(user.Login);

            if (isSendClientCard)
            {
                var smtpId = ReportHelper.SendClientCard(
                    user,
                    password.Password,
                    false,
                    Defaults,
                    emailsForSend);
                passwordChangeLog.SetSentTo(smtpId, emailsForSend);
            }

            string smsLog = ReportHelper.SendSmsPasswordToUser(user, password.Password, phonesForSendToUserArray);

            smsLog = smsLog + " " + ReportHelper.SendSmsToRegionalAdmin(user, password.Password, phonesForSendToAdminArray);
            passwordChangeLog.SmsLog = smsLog;

            DbSession.Save(user);
            DbSession.Save(AuditRecord.PasswordChange(user, isFree, reason));
            DbSession.Save(passwordChangeLog);

            NotificationHelper.NotifyAboutPasswordChange(Admin,
                                                         user,
                                                         password.Password,
                                                         isFree,
                                                         Context.Request.UserHostAddress,
                                                         reason);

            if (isSendClientCard)
            {
                Notify("Пароль успешно изменен.");
                RedirectTo(user, "Edit");
            }
            else
            {
                Redirect("main", "report", new { id = user.Id, isPasswordChange = true, passwordId = password.PasswordId });
            }
        }
Beispiel #25
0
        //public DataTable getAdUsers()
        //{

        //    if (HttpRuntime.Cache[enumDictCache.AdUsers.ToString()] == null)
        //    {
        //        //HttpRuntime.Cache.Add(enumDictCache.ADusers.ToString(),ADHelper.GetUserList( ADHelper.ExecuteAD(Enums.EntryType.User)), null, DateTime.Now.AddHours(12), TimeSpan.Zero, CacheItemPriority.High, null);
        //        HttpRuntime.Cache.Add(enumDictCache.AdUsers.ToString(), ADHelper.GetUserList(ADHelper.GetEmailsAndGroups()), null, DateTime.Now.AddHours(12), TimeSpan.Zero, CacheItemPriority.High, null);
        //    }

        //    return (DataTable)HttpRuntime.Cache[enumDictCache.AdUsers.ToString()];

        //    //return ADHelper.GetUserList( ADHelper.ExecuteAD(Enums.EntryType.User));
        //}

        public DataTable getAdGroups()
        {
            if (HttpRuntime.Cache[enumDictCache.AdGroups.ToString()] == null)
            {
                HttpRuntime.Cache.Add(enumDictCache.AdGroups.ToString(), ADHelper.GetUserList(ADHelper.GetEmailGroups()), null, DateTime.Now.AddHours(12), TimeSpan.Zero, CacheItemPriority.High, null);
            }

            return((DataTable)HttpRuntime.Cache[enumDictCache.AdGroups.ToString()]);

            //return ADHelper.GetUserList( ADHelper.ExecuteAD(Enums.EntryType.User));
        }
        public ActionResult Notat()
        {
            var dokument = RouteData.Values["docID"];

            if (dokument != null)
            {
                var lederResult = ADHelper.GetLederBundle(GetLoggedInUserAD());

                if (lederResult.Success)
                {
                    var leder = lederResult.Get();
                    ViewBag.Ledernavn = leder.Navn;
                    Bundles.AnsattInfo ansatt = GetAnsattFromSession();

                    if (!ansatt.Equals(Bundles.AnsattInfo.Empty))
                    {
                        ViewBag.Ansattnavn = ansatt.Navn;
                        ViewBag.Ansattnr   = ansatt.AnsattNr;
                        ViewBag.Date       = DateTime.Now.ToString("dd'/'MM yyyy");

                        if (dokument.Equals(Dokumenter.Dag1))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging dag 1",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn notat for dag 1 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', "
                                       + $"før den blir arkivert i WebSak av roboten.",
                                       "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.",
                                       $"<font size='5'>Sykefraværsoppfølging dag 1 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær,
                                       Maltekst.HentMalTekst("Dag1-5")
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dag5))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging dag 5",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn notat for dag 5 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', "
                                       + $"før den blir arkivert i WebSak av roboten.",
                                       "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.",
                                       $"<font size='5'>Sykefraværsoppfølging dag 5 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær,
                                       Maltekst.HentMalTekst("Dag1-5")
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dag14))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging dag 14",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn notat for dag 14 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', "
                                       + $"før den blir arkivert i WebSak av roboten.",
                                       "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.",
                                       $"<font size='5'>Sykefraværsoppfølging dag 14 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær,
                                       Maltekst.HentMalTekst("Dag14")
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dag28))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging dag 28",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn notat for dag 28 og laste opp en oppfølgingsplan for {ansatt.Navn}. Teksten blir lagret som pdf-fil på sikkert område når du trykker 'Send inn', "
                                       + $"før den blir arkivert i WebSak av roboten.",
                                       "Tips: Trykk på 'Fyll ut' for å få ferdig utfylt spørsmålstekst i dokumentet.",
                                       $"<font size='5'>Sykefraværsoppfølging dag 28 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær,
                                       Maltekst.HentMalTekst("Dag28")
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dialogmøte1))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging Dialogmøte 1",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn referat fra dialogmøte 1 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert"
                                       + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.",
                                       "",
                                       $"<font size='5'>Sykefraværsoppfølging Dialogmøte 1 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dialogmøte2))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging Dialogmøte 2",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn referat fra dialogmøte 2 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert"
                                       + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.",
                                       "",
                                       $"<font size='5'>Sykefraværsoppfølging Dialogmøte 2 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Dialogmøte3))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Sykefraværsoppfølging Dialogmøte 3",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn referat fra dialogmøte 3 vedrørende {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert"
                                       + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.",
                                       "",
                                       $"<font size='5'>Sykefraværsoppfølging Dialogmøte 3 - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.GenereltFraværsnotat))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            return(MakeNoteEditor(
                                       "Generelt fraværsnotat/Tilretteleggingssamtale",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive generelle notater relatert til fravær for {ansatt.Navn}. Teksten blir lagret som pdf-fil på sikkert"
                                       + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.",
                                       "",
                                       $"<font size='5'>Generelt fraværsnotat/Tilretteleggingssamtale - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Sykefravær
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.GenereltDokument))
                        {
                            string mappetype = (string)Session["docID"];
                            int    docId     = "Sykefraværsmappe".Equals(mappetype) ? Mappetype.Sykefravær : Mappetype.Ansattforhold;

                            MakeFileUploader("", "Generelle dokumenter", $"Her kan du laste opp generelle dokumenter for {ansatt.Navn} ({mappetype}).", Dokumenter.GenereltDokument, docId);
                            return(View("GenereltDokument"));
                        }
                        else if (dokument.Equals(Dokumenter.MøteinnkallingOppfølgingssamtale))
                        {
                            // logg besøkende på de ulike dagene for sikkerhets skyld
#if !DEBUG
                            System.IO.File.AppendAllText(@"C:\inetpub\logs\visitors.txt", DateTime.Now.ToString() + ": " + GetLoggedInUserAD() + ": " + dokument + "\n");
#endif
                            ViewBag.HelpLink = HelpLinks.Sykefravær;

                            ViewBag.Heading = $"Her kan du skrive møteinnkalling til oppfølgingssamtale for {ansatt.Navn}. Møteinnkallingen sendes"
                                              + " via elektronisk post til den ansatte hvis de har digital postkasse, hvis ikke sendes den som brev i posten.";

                            ViewBag.AutocompleteText = Maltekst.HentMalTekst("Møteinnkalling");

                            return(View("Moteinnkalling"));
                        }
                        else if (dokument.Equals(Dokumenter.GenereltUtgåendeDokument))
                        {
                            string mappetype = (string)Session["docID"];
                            int    docId     = "Sykefraværsmappe".Equals(mappetype) ? Mappetype.Sykefravær : Mappetype.Ansattforhold;
                            ViewBag.DocId   = docId;
                            ViewBag.Heading = $"Her kan du skrive utgående brev til {ansatt.Navn}. Brevet sendes"
                                              + " via elektronisk post til den ansatte hvis de har digital postkasse, hvis ikke sendes det som brev i posten.";

                            return(View("GenereltUtgaendeDokument"));
                        }
                        else if (dokument.Equals(Dokumenter.DigitalArbeidskontrakt))
                        {
                            ViewBag.HelpLink = HelpLinks.Arbeidskontrakt;

                            return(MakeFileUploader(
                                       "Arbeidskontrakt",
                                       $"Du laster nå opp dokumenter vedrørende {ansatt.Navn} på mappe Ansattforhold i WebSak.",
                                       "Har du sendt en arbeidsavtale til e-signering? <a href='https://signering.posten.no/virksomhet/#/' target='_blank'>Last den ned her</a>",
                                       "digital arbeidskontrakt",
                                       Mappetype.Ansattforhold
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Permisjonssøknad))
                        {
                            return(MakeFileUploader(
                                       "Permisjonssøknad",
                                       $"Du laster nå opp dokumenter vedrørende {ansatt.Navn} på mappe Ansattforhold i WebSak.",
                                       "Permisjonssøknader over 2 uker skal arkiveres i personalmappen.",
                                       "permisjonssøknad",
                                       Mappetype.Ansattforhold
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Utviklingssamtale))
                        {
                            ViewBag.HelpLink = HelpLinks.Utviklingssamtale;

                            return(MakeNoteEditor(
                                       "Utviklings-/medarbeidersamtale",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive inn utviklings-/medarbeidersamtale for {ansatt.Navn} direkte. Teksten blir lagret som pdf-fil på sikkert"
                                       + " område når du trykker 'Send inn', før den blir arkivert i WebSak av roboten.",
                                       "",
                                       $"<font size='5'>Utviklings-/medarbeidersamtale - {GetFormattedDate()}</font><blockquote></blockquote>",
                                       Mappetype.Ansattforhold
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Arbeidsattest))
                        {
                            ViewBag.HelpLink = HelpLinks.Arbeidsattest;

                            return(MakeNoteEditor(
                                       "Arbeidsattest",
                                       Datotype.Opplastingsdato,
                                       $"Her kan du skrive arbeidsattest for {ansatt.Navn}. Arbeidstaker som fratrer etter lovlig oppsigelse har krav på skriftlig attest av arbeidsgiver. " +
                                       $"Attesten skal inneholde opplysninger om arbeidstakers navn, fødselsdato, hva arbeidet har bestått i og om arbeidsforholdets varighet " +
                                       $"<a href='http://arbeidsmiljoloven.com/article/%C2%A7-15-15-attest/' target='_blank'>(se mer informasjon)</a>.<br/>" +
                                       $"Attesten blir arkivert i WebSak og sendt som digitalt brev med logo til den ansatte når du trykker 'Send inn'.",
                                       "",
                                       string.Format(Maltekst.HentMalTekst("Arbeidsattest"), ansatt.Navn),
                                       Mappetype.Ansattforhold,
                                       null,
                                       true
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.PolitiattestFormål))
                        {
                            ViewBag.HelpLink = HelpLinks.VedleggPolitiattest;

                            ViewBag.LovhjemmelListe = PolitiattestFactory.LovhjemmelListe;
                            ViewBag.Ansattfornavn   = ansatt.Fornavn;
                            ViewBag.Ansattetternavn = ansatt.Etternavn;
                            return(View("PolitiattestFormaal"));
                        }
                        else if (dokument.Equals(Dokumenter.Anvisningsfullmakt))
                        {
                            return(View("Anvisningsfullmakt"));
                        }
                        else if (dokument.Equals(Dokumenter.TilbaketrekkingAnvisningsfullmakt))
                        {
                            return(View("TilbaketrekkingAnvisningsfullmakt"));
                        }
                        else if (dokument.Equals(Dokumenter.FremlagtPolitiattest))
                        {
                            return(MakeNoteEditor(
                                       "Fremlagt politiattest",
                                       Datotype.Opplastingsdato,
                                       $"Fyll ut stillingstittel markert med <b>fet</b> tekst i editoren under."
                                       + " Roboten noterer i personalmappen at du bekrefter at politiattesten er mottatt, vurdert og makulert. For mer informasjon, se egen"
                                       + "<a href='https://kvalitet.kommuneforlaget.no/kvalitetsstyring#/documents/e04344b1-7aa4-4764-89b4-0d1e1b4788e1/80f68daf-0eb9-4610-97fb-a2925946dd5b' target='_blank'>"
                                       + " rutine</a> for politiattest.",
                                       "NB: merknad vedr. ansettelse jf. barnevernloven: politiattest skal ikke makuleres jf. forskrift om politiattest i henhold til barnevernloven §8",
                                       string.Format(Maltekst.HentMalTekst("FremlagtPolitiattest"), GetFormattedDate(), ansatt.Navn, leder.Navn),
                                       Mappetype.Ansattforhold
                                       ));
                        }
                        else if (dokument.Equals(Dokumenter.Esignering))
                        {
                            ViewBag.HelpLink = HelpLinks.Esignering;
                            return(View("E-signering"));
                        }
                        else if (dokument.Equals(Dokumenter.ArbeidsavtaleNyeNarvik))
                        {
                            ViewBag.Navn = ansatt.Navn;
                            var infoResult = HRMHelper.HentAnsattStillingsInfo(ansatt, GetLoggedInUserAD());



                            if (infoResult.Success)
                            {
                                var sID = Request.QueryString["stillingID"];
                                if (infoResult.Get().Count == 1 || sID != null)
                                {
                                    AvtaleInfo aInfo;

                                    if (sID != null)
                                    {
                                        aInfo = infoResult.Get()[int.Parse(sID)];
                                    }
                                    else
                                    {
                                        aInfo = infoResult.Get()[0];
                                    }

                                    ViewBag.Navn           = aInfo.Navn;
                                    ViewBag.Personnr       = aInfo.Personnr;
                                    ViewBag.Arbeidssted    = aInfo.Arbeidssted;
                                    ViewBag.TittelStilling = aInfo.TittelStilling;
                                    ViewBag.Prosent        = aInfo.Prosent;
                                    ViewBag.Lonn           = aInfo.Lonn;
                                    ViewBag.TimerPrUke     = aInfo.TimerPrUke;
                                    ViewBag.Fast           = aInfo.ErFastStilling();
                                    if (!aInfo.ErFastStilling())
                                    {
                                        var aInfoMid = (AvtaleInfoMidlertidlig)aInfo;
                                        ViewBag.Hjemmel   = aInfoMid.Hjemmel;
                                        ViewBag.Sluttdato = aInfoMid.Sluttdato;
                                    }
                                    return(View("ArbeidsavtaleNyeNarvik"));
                                }
                                else
                                {
                                    // må håndtere flere stillinger på samme leder
                                    ViewBag.StillingListe = infoResult.Get();
                                    return(View("VelgStilling"));
                                }
                            }

                            return(View("ArbeidsavtaleNyeNarvik"));
                        }
                        else
                        {
                            TempData["ErrorMsgGlobal"] = dokument + " er ikke tilgjengelig";
                            return(RedirectToAction("VelgDokument", "Home"));
                        }
                    }
                    else
                    {
                        TempData["ErrorMsgGlobal"] = "Du må velge en ansatt for å bruke denne funksjonen";
                        return(RedirectToAction("Index", "Home"));
                    }
                }
                else
                {
                    return(new HttpUnauthorizedResult());
                }
            }
            else
            {
                TempData["ErrorMsgGlobal"] = "Velg et dokument fra menyen under";
                return(RedirectToAction("VelgDokument", "Home"));
            }
        }
Beispiel #27
0
        protected void BtnSubmit_Click(object sender, EventArgs e)
        {
            //摸拟用户登录验证(帐号、密码于web.config中)
            //真实环境此处应通过数据库进行验证

            string strAccount     = this.UserName.Text;
            string strPassport    = this.UserPwd.Text;
            string strWebSiteName = String.Empty;

            if (OAuthByLDAP)
            {
                OAuthLDAP   = System.Configuration.ConfigurationManager.AppSettings["OAuthLDAP"];
                isValidUser = ADHelper.TryAuthenticate(OAuthLDAP, strAccount, strPassport);

                //IdentityImpersonation Login = new IdentityImpersonation(strAccount, strPassport, LDAP);
                //Login.BeginImpersonate();
            }
            else
            {
                isValidUser = this.UserName.Text == System.Configuration.ConfigurationManager.AppSettings["Acount"] &&
                              this.UserPwd.Text == System.Configuration.ConfigurationManager.AppSettings["PassWord"];
            }

            if (isValidUser)
            {
                //产生令牌
                string     tokenValue  = this.getGuidString();
                HttpCookie tokenCookie = new HttpCookie("Token");
                tokenCookie.Values.Add("Value", tokenValue);
                //获取验证站点域名 "www.passport.com";
                tokenCookie.Domain = strCookieDomain;
                Response.AppendCookie(tokenCookie);

                //HttpCookie AccountCookie = new HttpCookie("AccountID");
                //AccountCookie.Values.Add("Value", strAccount);
                //Response.AppendCookie(AccountCookie);

                //HttpCookie PassportCookie = new HttpCookie("Passport");
                //PassportCookie.Values.Add("Value", strPassport);
                //Response.AppendCookie(PassportCookie);


                OAuthToken OAuth = new OAuthToken
                {
                    ID = 0
                    ,
                    UserAgent = Request.UserAgent
                    ,
                    isLocked = false
                    ,
                    AccountID = strAccount
                    ,
                    AccountName = strAccount
                    ,
                    PassWords = strPassport
                    ,
                    TokenVal = tokenValue
                    ,
                    WebSiteName = strWebSiteName
                    ,
                    RedirectURL = ""
                    ,
                    ReturnURL = ""
                    ,
                    LogInDtime = DateTime.Now.ToString()
                    ,
                    LogOutDtime = DateTime.Now.AddMinutes(1).ToString()
                    ,
                    LogInIP = GetRequest.GetClientIP() // "172.0.0.1" + Request.UserAgent
                };

                //产生主站凭证
                object info = true;

                TokenCache.Insert(tokenValue, OAuth.Serializer(), DateTime.Now.AddMinutes(double.Parse(System.Configuration.ConfigurationManager.AppSettings["Timeout"])));

                TopLoginWindows.Visible = false;
                TopLoginAccount.Visible = true;
                LiUserAccount.Text      = strAccount;

                //跳转回分站
                if (Request.QueryString["BackURL"] != null)
                {
                    Response.Redirect(Server.UrlDecode(Request.QueryString["BackURL"]));
                }
                else
                {
                    if (OAuthDefaultURL.NotIsNullOrEmpty())
                    {
                        Response.Redirect(OAuthDefaultURL);
                    }
                }
            }
            else
            {
                JScript.Alert(this, "抱歉,帐号或密码有误!请正确输入域账号或密码");
            }
        }
Beispiel #28
0
 public virtual bool HaveLockedUsers()
 {
     return(Users.Any(u => ADHelper.IsLoginExists(u.Login) && ADHelper.IsLocked(u.Login)));
 }
Beispiel #29
0
        private static ADHelper GetADHelper()
        {
            ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo();

            return(ADHelper.GetInstance(serverInfo));
        }
Beispiel #30
0
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //摸拟用户登录验证(帐号、密码于web.config中)
            //真实环境此处应通过数据库进行验证

            string strAccount     = this.txtAccount.Text;
            string strPassport    = this.txtPassport.Text;
            string strWebSiteName = String.Empty;


            JosonOAuth.OUser Entity = null;

            if (OAuthByLDAP)
            {
                if (OAuthDefault)
                {
                    OAuthLDAP   = System.Configuration.ConfigurationManager.AppSettings["OAuthLDAP"];
                    isValidUser = ADHelper.TryAuthenticate(OAuthLDAP, strAccount, strPassport);
                }
                else
                {
                    JosonOAuth.WebServiceSoapClient O = new JosonOAuth.WebServiceSoapClient();

                    isValidUser = O.OAuth(out Entity, strAccount, strPassport);
                }

                //IdentityImpersonation Login = new IdentityImpersonation(strAccount, strPassport, OAuthLDAP);
                //Login.BeginImpersonate();
            }
            else
            {
                isValidUser = this.txtAccount.Text == System.Configuration.ConfigurationManager.AppSettings["Acount"] &&
                              this.txtPassport.Text == System.Configuration.ConfigurationManager.AppSettings["PassWord"];
            }

            //JScript.Alert(this, OAuthDefaultURL);
            //JScript.Alert(this, isValidUser.ToStrings());

            //JScript.Alert(this, Request.QueryString["BackURL"]);
            //JScript.Alert(this, OAuthDefaultURL);

            if (isValidUser)
            {
                //产生令牌
                string     tokenValue  = Guid.NewGuid().ToString().ToUpper(); //产生绝对唯一字符串,用于令牌
                HttpCookie tokenCookie = new HttpCookie("Token");
                tokenCookie.Values.Add("Value", tokenValue);
                //获取验证站点域名 "www.passport.com";
                tokenCookie.Domain = strCookieDomain ?? Net.Common.GetRequest.GetCurrentDomain();
                Response.AppendCookie(tokenCookie);

                //HttpCookie AccountCookie = new HttpCookie("AccountID");
                //AccountCookie.Values.Add("Value", strAccount);
                //Response.AppendCookie(AccountCookie);

                //HttpCookie PassportCookie = new HttpCookie("Passport");
                //PassportCookie.Values.Add("Value", strPassport);
                //Response.AppendCookie(PassportCookie);

                LabMsg.Text = String.Empty;

                OAuthToken OAuth = new OAuthToken
                {
                    ID          = 0,
                    UserAgent   = Request.UserAgent,
                    isLocked    = false,
                    AccountID   = strAccount,
                    AccountName = strAccount,

                    //sn = Entity?.SN,
                    //givenName = Entity?.GivenName,
                    //displayName = Entity?.DisplayName,
                    //initials = Entity?.initials,
                    //title = Entity?.Title,
                    //company = Entity?.Company,
                    //mail = Entity?.Mail,
                    //otherMailBox = Entity?.OtherMailBox,
                    //homePhone = Entity?.HomePhone,
                    //mobile = Entity?.Mobile,
                    //otherMobile = Entity?.OtherMobile,
                    //whenCreated = Entity.WhenCreated,
                    //whenChanged = Entity.WhenChanged,
                    //department = Entity?.Department,
                    //manager = Entity?.Manager,
                    //streetAddress=Entity?.streetAddress,
                    //physicalDeliveryOfficeName= Entity?.physicalDeliveryOfficeName,


                    sn            = Entity.SN,
                    givenName     = Entity.GivenName,
                    displayName   = Entity.DisplayName,
                    initials      = Entity.initials,
                    title         = Entity.Title,
                    company       = Entity.Company,
                    mail          = Entity.Mail,
                    otherMailBox  = Entity.OtherMailBox,
                    homePhone     = Entity.HomePhone,
                    mobile        = Entity.Mobile,
                    otherMobile   = Entity.OtherMobile,
                    whenCreated   = Entity.WhenCreated,
                    whenChanged   = Entity.WhenChanged,
                    department    = Entity.Department,
                    manager       = Entity.Manager,
                    streetAddress = Entity.streetAddress,
                    physicalDeliveryOfficeName = Entity.physicalDeliveryOfficeName,


                    PassWords   = strPassport,
                    TokenVal    = tokenValue,
                    WebSiteName = strWebSiteName,
                    RedirectURL = "",
                    ReturnURL   = "",
                    LogInDtime  = DateTime.Now.ToStrings(),
                    LogOutDtime = DateTime.Now.AddMinutes(1).ToStrings(),
                    LogInIP     = GetRequest.GetClientIP() // "172.0.0.1" + Request.UserAgent
                };

                //产生主站凭证
                object info = true;

                TokenCache.Insert(tokenValue, OAuth.Serializer(), DateTime.Now.AddMinutes(double.Parse(System.Configuration.ConfigurationManager.AppSettings["Timeout"])));


                //跳转回分站
                if (Request.QueryString["BackURL"] != null)
                {
                    String RedirectURL = Server.UrlDecode(Request.QueryString["BackURL"]);
                    Response.Redirect(RedirectURL);
                }
                else
                {
                    if (OAuthDefaultURL.NotIsNullOrEmpty())
                    {
                        Response.Redirect(OAuthDefaultURL);
                    }
                }
            }
            else
            {
                LabMsg.Text = "抱歉,帐号或密码有误!";
            }
        }
		private static void ProcessBatch(ADToPermissionCenterSynchronizer context, EntityMappingCollection mappings, ADHelper adHelper, int startIndex, int size)
		{
			string[] propertiesToGet = { "sAMAccountName", "mail", "msRTCSIP-PrimaryUserAddress" };

			IEnumerable<SearchResult> adResults = SynchronizeHelper.GetSearchResultsByPropertyValues(adHelper, "sAMAccountName", mappings.ToKeyArray("CodeName", startIndex, size), ADSchemaType.Users, propertiesToGet, size);

			Dictionary<string, SimpleUser> codeNameDict = mappings.ToCodeNameDictionary(startIndex, size);

			List<SimpleUser> changes = DiscoverChanges(codeNameDict, adResults);

			ApplyChanges(changes, context);
		}
        public void Update([ARDataBind("client", AutoLoad = AutoLoadBehavior.Always)] Client client)
        {
            Admin.CheckClientPermission(client);
            var changeName = client.IsChanged(c => c.Name);

            if (!Validator.IsValid(client))
            {
                var users     = client.Users;
                var addresses = client.Addresses;
                PropertyBag["Client"]        = client;
                PropertyBag["ContactGroups"] = client.ContactGroupOwner.ContactGroups;
                PropertyBag["users"]         = users.OrderBy(user => user.Id).ToList();
                PropertyBag["addresses"]     = addresses.OrderBy(a => a.LegalEntity.Name).ThenBy(a => a.Name).ToList();

                PropertyBag["usersInfo"] = ADHelper.GetPartialUsersInformation(users);
                var filter = new MessageQuery();
                BindObjectInstance(filter, "filter");
                PropertyBag["filter"]   = filter;
                PropertyBag["messages"] = filter.Execute(client, DbSession);
                RenderView("Show");
                return;
            }
            var savedNotify    = true;
            var changeFullName = client.IsChanged(c => c.FullName);

            if (changeFullName || changeName)
            {
                var legalEntityes = client.GetLegalEntity();
                if (legalEntityes.Count == 1)
                {
                    var legalEntity = legalEntityes.First();
                    if (changeName)
                    {
                        legalEntity.Name = client.Name;
                    }
                    if (changeFullName)
                    {
                        legalEntity.FullName = client.FullName;
                    }
                    DbSession.Save(legalEntity);
                }
                else
                {
                    var changePartMessage = string.Empty;
                    if (changeName)
                    {
                        changePartMessage += "краткое";
                    }
                    if (changeFullName)
                    {
                        changePartMessage += "полное";
                    }
                    Notify(string.Format("Вы изменили {0} наименование клиента. У клиента более одного юр. лица, переименование юр. лиц не было произведено.", changePartMessage));
                    savedNotify = false;
                }
            }
            DbSession.SaveOrUpdate(client);
            if (savedNotify)
            {
                Notify("Сохранено");
            }
            RedirectToAction("Show", new Dictionary <string, string> {
                { "id", client.Id.ToString() }
            });
        }
Beispiel #33
0
        public string ProcessLongRunningAction(string userIdentityName, string id)
        {
            taskId = id;

            SetStatus(0, "Старт импорта...");

            var employeeList = _employeeService.Get(x => x.ToList().OrderBy(e => e.FullName).ToList());


            string domainName        = Domain.GetCurrentDomain().Name;
            string domainNetbiosName = ADHelper.GetDomainNetbiosName(Domain.GetCurrentDomain());

            int k = 0;

            foreach (var employee in employeeList)
            {
                SetStatus(k * 100 / employeeList.Count(), "Импорт данных из AD для сотрудника: " + employee.FullName);

                using (var pc = new PrincipalContext(ContextType.Domain, domainName))
                {
                    UserPrincipal userPrincipal = null;

                    try
                    {
                        try
                        {
                            userPrincipal = UserPrincipal.FindByIdentity(pc, IdentityType.Name, employee.FullName);
                        }
                        catch (Exception)
                        {
                            userPrincipal = null;
                        }

                        if (userPrincipal == null &&
                            String.IsNullOrEmpty(employee.ADLogin) == false)
                        {
                            try
                            {
                                userPrincipal = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, employee.ADLogin.Replace(domainNetbiosName + "\\", ""));
                            }
                            catch (Exception)
                            {
                                userPrincipal = null;
                            }
                        }

                        if (userPrincipal == null &&
                            String.IsNullOrEmpty(employee.Email) == false)
                        {
                            try
                            {
                                UserPrincipal qbeUser = new UserPrincipal(pc);
                                qbeUser.EmailAddress = employee.Email;

                                PrincipalSearcher srch = new PrincipalSearcher(qbeUser);

                                userPrincipal = srch.FindOne() as UserPrincipal;
                            }
                            catch (Exception)
                            {
                                userPrincipal = null;
                            }
                        }

                        if (userPrincipal != null)
                        {
                            //db.Entry(employee).State = EntityState.Modified;

                            if (String.IsNullOrEmpty(domainNetbiosName) == false)
                            {
                                employee.ADLogin = domainNetbiosName + "\\" + userPrincipal.SamAccountName;
                            }
                            else
                            {
                                employee.ADLogin = userPrincipal.SamAccountName;
                            }

                            employee.Email = userPrincipal.EmailAddress;

                            DirectoryEntry de = (userPrincipal.GetUnderlyingObject() as DirectoryEntry);

                            if (de.Properties.Contains("physicalDeliveryOfficeName") == true &&
                                de.Properties["physicalDeliveryOfficeName"].Value != null &&
                                String.IsNullOrEmpty(de.Properties["physicalDeliveryOfficeName"].Value.ToString()) == false &&
                                String.IsNullOrEmpty(employee.OfficeName) == true)
                            {
                                employee.OfficeName = de.Properties["physicalDeliveryOfficeName"].Value.ToString();
                            }

                            if (de.Properties.Contains("telephoneNumber") == true &&
                                de.Properties["telephoneNumber"].Value != null &&
                                String.IsNullOrEmpty(de.Properties["telephoneNumber"].Value.ToString()) == false &&
                                String.IsNullOrEmpty(employee.WorkPhoneNumber) == true)
                            {
                                employee.WorkPhoneNumber = de.Properties["telephoneNumber"].Value.ToString();
                            }

                            if (de.Properties.Contains("mobile") == true &&
                                de.Properties["mobile"].Value != null &&
                                String.IsNullOrEmpty(de.Properties["mobile"].Value.ToString()) == false &&
                                String.IsNullOrEmpty(employee.PublicMobilePhoneNumber) == true)
                            {
                                employee.PublicMobilePhoneNumber = de.Properties["mobile"].Value.ToString();
                            }

                            if (de.Properties.Contains("extensionAttribute10") == true &&
                                de.Properties["extensionAttribute10"].Value != null &&
                                String.IsNullOrEmpty(de.Properties["extensionAttribute10"].Value.ToString()) == false)
                            {
                                employee.ADEmployeeID = de.Properties["extensionAttribute10"].Value.ToString();
                            }
                            _employeeService.Update(employee);
                        }
                    }
                    catch (Exception)
                    {
                    }
                }

                k++;
            }

            SetStatus(100, "Импорт завершен");

            return(taskId);
        }