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","*****@*****.**"); }
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()); }
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); }
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); }
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, хотя должна быть"); }
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)); }); }
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); } }
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); } } }
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()); } }
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")); } }
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); }
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(); } } }); } }
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); }
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; } }
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 = "成功"; } }
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); }
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; } } }
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 }); } }
//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")); } }
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, "抱歉,帐号或密码有误!请正确输入域账号或密码"); } }
public virtual bool HaveLockedUsers() { return(Users.Any(u => ADHelper.IsLoginExists(u.Login) && ADHelper.IsLocked(u.Login))); }
private static ADHelper GetADHelper() { ServerInfo serverInfo = ServerInfoConfigSettings.GetConfig().ServerInfos["dc"].ToServerInfo(); return(ADHelper.GetInstance(serverInfo)); }
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() } }); }
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); }