public UsersObject GetUserMailbox(string identity) { ExchangePowershell powershell = null; try { powershell = new ExchangePowershell(StaticSettings.ExchangeURI, StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.ExchangeUseKerberos, StaticSettings.PrimaryDC); UsersObject obj = powershell.GetUser(identity, StaticSettings.ExchangeVersion); return(obj); } catch (Exception ex) { this.logger.Error("Failed to retrieve user mailbox information " + identity, ex); ThrowEvent(AlertID.FAILED, ex.Message); return(null); } finally { if (powershell != null) { powershell.Dispose(); } } }
/// <summary> /// 新增用户 /// </summary> /// <param name="aak"></param> /// <returns></returns> public static int AddUser(UsersObject uo) { using (IDbConnection conn = ClsCommon.OpenConnection()) //这里访问的是Sqlite数据文件,这里OpenConnection即上边获取连接数据库对象方法 { var result = conn.Insert(uo); return(Convert.ToInt32(result)); } }
/// <summary> /// 根据对象删除用户 /// </summary> /// <param name="uo"></param> /// <returns></returns> public static int DeleteUserByObject(UsersObject uo) { var result = 0; using (IDbConnection conn = ClsCommon.OpenConnection()) //这里访问的是Sqlite数据文件,这里OpenConnection即上边获取连接数据库对象方法 { result = conn.Delete(uo); } return(Convert.ToInt32(result)); }
/// <summary> /// Gets detailed user information about a specific user /// </summary> /// <param name="userPrincipalName"></param> /// <returns></returns> public UsersObject GetUser(string userPrincipalName) { PrincipalContext pc = null; UserPrincipalExt up = null; try { pc = new PrincipalContext(ContextType.Domain, this.domainController, this.username, this.password); logger.Debug("Attempting to retrieve user " + userPrincipalName); up = UserPrincipalExt.FindByIdentity(pc, IdentityType.UserPrincipalName, userPrincipalName); if (up == null) { throw new Exception("USER_NOT_FOUND"); } else { UsersObject returnUser = new UsersObject(); returnUser.UserPrincipalName = up.UserPrincipalName; returnUser.sAMAccountName = up.SamAccountName; returnUser.Firstname = up.GivenName; returnUser.Middlename = up.MiddleName; returnUser.Lastname = up.Surname; returnUser.DisplayName = up.DisplayName; returnUser.Department = up.Department; returnUser.IsEnabled = up.Enabled == null ? true : (bool)up.Enabled; return(returnUser); } } catch (Exception ex) { this.logger.Error("Error retrieving user information " + userPrincipalName, ex); throw; } finally { if (up != null) { up.Dispose(); } if (pc != null) { pc.Dispose(); } } }
public static string getRaffleWinner(string data) { string winner = null; if (data.Equals("repick")) { if (raffleWinner != null) { winner = raffleWinner.Username; } if (dbHelper("UPDATE kcgameon.EventArchive SET wondoor = 2 WHERE Username = \"" + winner + "\"")) { usersCheckedIn[raffleWinner.Username] = 2;//Update the local users list for raffle to Did Not Show return("Previous winner marked as a no show. Select another."); } else { return(null); } } else { Random randNum = new Random(); int randomNumber; //temporary user list to enable looping List <string> eligibleUsers = usersCheckedIn.Where(user => user.Value == 0).Select(x => x.Key).ToList(); if (eligibleUsers.Count > 0) { randomNumber = randNum.Next(eligibleUsers.Count); raffleWinner = userlist.Find(user => user.Username.Equals(eligibleUsers.ElementAt(randomNumber)));//Get user's first + last name if (raffleWinner != null) { winner = raffleWinner.First + " " + raffleWinner.Last; } else { winner = eligibleUsers.ElementAt(randomNumber); } usersCheckedIn[eligibleUsers.ElementAt(randomNumber)] = 1;//Update the local users list for raffle dbHelper("UPDATE kcgameon.EventArchive SET wondoor = 1 WHERE Username = \"" + eligibleUsers.ElementAt(randomNumber) + "\""); return(winner); } } return("Ran out of users, probably..."); }
private void SaveNewUser() { UsersObject newUser = new UsersObject(); newUser.CompanyCode = WebSessionHandler.SelectedCompanyCode; newUser.Firstname = txtFirstName.Text; newUser.Middlename = txtMiddleName.Text; newUser.Lastname = txtLastname.Text; newUser.DisplayName = txtDisplayName.Text; newUser.Department = txtDepartment.Text; newUser.UserPrincipalName = string.Format("{0}@{1}", txtLoginName.Text, ddlLoginDomain.SelectedItem.Text); newUser.Password = txtPassword1.Text; newUser.PasswordNeverExpires = cbPasswordNeverExpires.Checked; newUser.IsCompanyAdmin = cbCompanyAdmin.Checked; newUser.IsResellerAdmin = cbResellerAdmin.Checked; if (newUser.IsCompanyAdmin) { newUser.EnableExchangePerm = cbEnableExchange.Checked; newUser.DisableExchangePerm = cbDisableExchange.Checked; newUser.AddDomainPerm = cbAddDomain.Checked; newUser.DeleteDomainPerm = cbDeleteDomain.Checked; newUser.EnableAcceptedDomainPerm = cbEnableAcceptedDomain.Checked; newUser.DisableAcceptedDomainPerm = cbDisableAcceptedDomain.Checked; } UsersViewModel viewModel = new UsersViewModel(); viewModel.ViewModelEvent += viewModel_ViewModelEvent; // Create new user viewModel.CreateUser(newUser); // Audit AuditGlobal.AddAudit(WebSessionHandler.SelectedCompanyCode, HttpContext.Current.User.Identity.Name, ActionID.CreateUser, newUser.UserPrincipalName, null); // Refresh PopulateUsersListView(); }
public IActionResult UploadImage([FromBody] UsersObject user) { var userId = this.help.GetCurrentUser(HttpContext); if (userId <= 0 && userId == user.UserId) { return(StatusCode(401, "الرجاء الـتأكد من أنك قمت بتسجيل الدخول")); } var Users = (from p in db.Users where p.Id == user.UserId && (p.Status == 1 || p.Status == 2) select p).SingleOrDefault(); if (Users == null) { return(BadRequest("عفوا هدا المستخدم غير موجود")); } Users.Image = Convert.FromBase64String(user.Photo.Substring(user.Photo.IndexOf(",") + 1)); //Users.ModifiedBy = userId; //Users.ModifiedOn = DateTime.Now; db.SaveChanges(); return(Ok("تم تغير الصورة بنـجاح")); }
public IActionResult EditParentProfile([FromBody] UsersObject user) { try { var userId = this.help.GetCurrentUser(HttpContext); if (userId <= 0) { return(StatusCode(401, "الرجاء الـتأكد من أنك قمت بتسجيل الدخول")); } var perm = this.help.getPermissin("Users_Edit", userId, db); if (!perm) { return(StatusCode(401, "لا تملك الصلاحية")); } var Users = (from p in db.Users where p.Id == user.UserId && (p.Status != 9) select p).SingleOrDefault(); if (Users == null) { return(BadRequest("خطأ بيانات المستخدم غير موجودة")); } if (Users.Phone != user.Phone) { var cPhone = (from u in db.Users where u.Phone == user.Phone select u).SingleOrDefault(); if (cPhone != null) { return(BadRequest(" رقم الهاتف موجود مسبقا")); } } if (Users.Email != user.Email) { var cUser = (from u in db.Users where u.Email == user.Email && u.Status != 9 select u).SingleOrDefault(); if (cUser != null) { if (cUser.Status == 0) { return(BadRequest("هدا المستخدم موجود من قبل يحتاج الي تقعيل الحساب فقط")); } if (cUser.Status == 1 || cUser.Status == 2) { return(BadRequest("هدا المستخدم موجود من قبل يحتاج الي دخول فقط")); } } } Users.Email = user.Email; Users.Phone = user.Phone; Users.LoginName = user.LoginName; Users.Name = user.FullName; Users.BirthDate = user.DateOfBirth; Users.Gender = user.Gender; //Users.ModifiedBy = userId; //Users.ModifiedOn = DateTime.Now; db.SaveChanges(); return(Ok("تم تعديل بيانات المستخدم بنجاح")); } catch (Exception e) { return(StatusCode(500, e.Message)); } }
public IActionResult AddUser([FromBody] UsersObject user) { try { var userId = this.help.GetCurrentUser(HttpContext); if (userId <= 0) { return(StatusCode(401, "الرجاء الـتأكد من أنك قمت بتسجيل الدخول")); } var perm = this.help.getPermissin("Users_Add", userId, db); if (!perm) { return(StatusCode(401, "لا تملك الصلاحية")); } if (user == null) { return(BadRequest("خطأ في إرسال البيانات")); } if (string.IsNullOrWhiteSpace(user.LoginName)) { return(BadRequest("الرجاء ادحال اسم المسنخدم بطريقة صحيحة")); } if (string.IsNullOrWhiteSpace(user.FullName)) { return(BadRequest("الرجاء إدخال الاسم الرباعي")); } if (!Validation.IsValidEmail(user.Email)) { return(BadRequest("الرجاء ادخال الايميل بالطريقة الصحيحة")); } if (user.Gender != 1 && user.Gender != 2) { return(BadRequest("الرجاء ادخال الجنس (ذكر - انثي)")); } if (string.IsNullOrWhiteSpace(user.DateOfBirth.ToString())) { return(BadRequest("الرجاء دخال تاريخ الميلاد المستخدم")); } //if ((DateTime.Now.Year - user.DateOfBirth.Year) < 18) //{ // return BadRequest("يجب ان يكون عمر المستخدم اكبر من 18"); //} var cLoginName = (from u in db.Users where u.LoginName == user.LoginName select u).SingleOrDefault(); if (cLoginName != null) { return(BadRequest(" اسم الدخول موجود مسبقا")); } var cPhone = (from u in db.Users where u.Phone == user.Phone select u).SingleOrDefault(); if (cPhone != null) { return(BadRequest(" رقم الهاتف موجود مسبقا")); } var cUser = (from u in db.Users where u.Email == user.Email && u.Status != 9 select u).SingleOrDefault(); if (cUser != null) { if (cUser.Status == 0) { return(BadRequest("هدا المستخدم موجود من قبل يحتاج الي تقعيل الحساب فقط")); } if (cUser.Status == 1 || cUser.Status == 2) { return(BadRequest("هدا المستخدم موجود من قبل يحتاج الي دخول فقط")); } } cUser = new Users(); cUser.Phone = user.Phone; cUser.LoginName = user.LoginName; cUser.Name = user.FullName; cUser.Email = user.Email; cUser.BirthDate = user.DateOfBirth; cUser.CreatedBy = userId; cUser.CreatedOn = DateTime.Now; cUser.Gender = (short)user.Gender; cUser.LoginTryAttempts = 0; cUser.UserType = user.UserType; cUser.GroupId = user.GroupId; cUser.Password = Security.ComputeHash(user.Password, HashAlgorithms.SHA512, null); if (user.Photo == null) { cUser.Image = Convert. FromBase64String("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////////////////////////////A+gAAAAA/////////////////////////////wPoAAAAAP////////////////////////////8D6AAAAAD/////////////////////////////A+gAADhCSU0EAAAAAAAAAgAAOEJJTQQCAAAAAAACAAA4QklNBDAAAAAAAAEBADhCSU0ELQAAAAAABgABAAAAAjhCSU0ECAAAAAAAEAAAAAEAAAJAAAACQAAAAAA4QklNBB4AAAAAAAQAAAAAOEJJTQQaAAAAAANJAAAABgAAAAAAAAAAAAAAjAAAAIwAAAAKAFUAbgB0AGkAdABsAGUAZAAtADEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAIwAAACMAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAEAAAAAAABudWxsAAAAAgAAAAZib3VuZHNPYmpjAAAAAQAAAAAAAFJjdDEAAAAEAAAAAFRvcCBsb25nAAAAAAAAAABMZWZ0bG9uZwAAAAAAAAAAQnRvbWxvbmcAAACMAAAAAFJnaHRsb25nAAAAjAAAAAZzbGljZXNWbExzAAAAAU9iamMAAAABAAAAAAAFc2xpY2UAAAASAAAAB3NsaWNlSURsb25nAAAAAAAAAAdncm91cElEbG9uZwAAAAAAAAAGb3JpZ2luZW51bQAAAAxFU2xpY2VPcmlnaW4AAAANYXV0b0dlbmVyYXRlZAAAAABUeXBlZW51bQAAAApFU2xpY2VUeXBlAAAAAEltZyAAAAAGYm91bmRzT2JqYwAAAAEAAAAAAABSY3QxAAAABAAAAABUb3AgbG9uZwAAAAAAAAAATGVmdGxvbmcAAAAAAAAAAEJ0b21sb25nAAAAjAAAAABSZ2h0bG9uZwAAAIwAAAADdXJsVEVYVAAAAAEAAAAAAABudWxsVEVYVAAAAAEAAAAAAABNc2dlVEVYVAAAAAEAAAAAAAZhbHRUYWdURVhUAAAAAQAAAAAADmNlbGxUZXh0SXNIVE1MYm9vbAEAAAAIY2VsbFRleHRURVhUAAAAAQAAAAAACWhvcnpBbGlnbmVudW0AAAAPRVNsaWNlSG9yekFsaWduAAAAB2RlZmF1bHQAAAAJdmVydEFsaWduZW51bQAA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IkFkb2JlIFhNUCBDb3JlIDUuNi1jMTExIDc5LjE1ODMyNSwgMjAxNS8wOS8xMC0wMToxMDoyMCAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIiB4bWxuczpwaG90b3Nob3A9Imh0dHA6Ly9ucy5hZG9iZS5jb20vcGhvdG9zaG9wLzEuMC8iIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiB4bXA6Q3JlYXRlRGF0ZT0iMjAxNy0xMi0wMVQxOTozNDoxNyswMjowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAxNy0xMi0wMVQxOTozNDoxNyswMjowMCIgeG1wOk1vZGlmeURhdGU9IjIwMTctMTItMDFUMTk6MzQ6MTcrMDI6MDAiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6MmE0MzNlNTUtNzk5ZC00NTRlLWI1ZTUtYWIwNjFmOTUwNThhIiB4bXBNTTpEb2N1bWVudElEPSJhZG9iZTpkb2NpZDpwaG90b3Nob3A6ZDM3ZThiZTYtZDZiZC0xMWU3LWIxNWEtOTViY2JlMzViMTFhIiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6ZjMzZTk0OWItYWNkYi04MjQxLWIxNTctNDgwNDEyMDdkMzNmIiBkYzpmb3JtYXQ9ImltYWdlL2pwZWciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSI+IDx4bXBNTTpIaXN0b3J5PiA8cmRmOlNlcT4gPHJkZjpsaSBzdEV2dDphY3Rpb249ImNyZWF0ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6ZjMzZTk0OWItYWNkYi04MjQxLWIxNTctNDgwNDEyMDdkMzNmIiBzdEV2dDp3aGVuPSIyMDE3LTEyLTAxVDE5OjM0OjE3KzAyOjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgMjAxNSAoV2luZG93cykiLz4gPHJkZjpsaSBzdEV2dDphY3Rpb249InNhdmVkIiBzdEV2dDppbnN0YW5jZUlEPSJ4bXAuaWlkOjJhNDMzZTU1LTc5OWQtNDU0ZS1iNWU1LWFiMDYxZjk1MDU4YSIgc3RFdnQ6d2hlbj0iMjAxNy0xMi0wMVQxOTozNDoxNyswMjowMCIgc3RFdnQ6c29mdHdhcmVBZ2VudD0iQWRvYmUgUGhvdG9zaG9wIENDIDIwMTUgKFdpbmRvd3MpIiBzdEV2dDpjaGFuZ2VkPSIvIi8+IDwvcmRmOlNlcT4gPC94bXBNTTpIaXN0b3J5PiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8P3hwYWNrZXQgZW5kPSJ3Ij8+/+IMWElDQ19QUk9GSUxFAAEBAAAMSExpbm8CEAAAbW50clJHQiBYWVogB84AAgAJAAYAMQAAYWNzcE1TRlQAAAAASUVDIHNSR0IAAAAAAAAAAAAAAAEAAPbWAAEAAAAA0y1IUCAgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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"); } else { cUser.Image = Convert.FromBase64String(user.Photo.Substring(user.Photo.IndexOf(",") + 1)); } cUser.CreatedOn = DateTime.Now; //1- Active //2- locked //9- deleted not exist cUser.Status = 1; db.Users.Add(cUser); db.SaveChanges(); return(Ok("تم تسجيل المستخدم بنجاح ")); } catch (Exception e) { return(StatusCode(500, e.Message)); } }
/// <summary> /// Authenticates a user a returns an array of groups they belong to /// </summary> /// <param name="userName"></param> /// <param name="userPassword"></param> /// <returns>Array of groups the user belongs to</returns> public UsersObject Authenticate(string userName, string userPassword) { PrincipalContext pc = null; UserPrincipal up = null; DirectoryEntry de = null; try { pc = new PrincipalContext(ContextType.Domain, this.domainController, this.username, this.password); logger.Debug("Attempting to authenticate user " + userName); // Try to authenticate bool authenticated = pc.ValidateCredentials(userName, userPassword); if (authenticated) { logger.Debug(userName + " successfully authenticated. Attempting to retrieve groups that the user belongs to."); UsersObject loggedInUser = new UsersObject(); up = UserPrincipal.FindByIdentity(pc, IdentityType.UserPrincipalName, userName); de = up.GetUnderlyingObject() as DirectoryEntry; // Set values loggedInUser.UserPrincipalName = up.UserPrincipalName; loggedInUser.DisplayName = up.DisplayName; loggedInUser.Groups = new List <string>(); for (int i = 0; i < de.Properties["memberOf"].Count; i++) { loggedInUser.Groups.Add(de.Properties["memberOf"][i].ToString()); } logger.Debug(userName + " belongs to the following groups: " + String.Join(", ", loggedInUser.Groups)); return(loggedInUser); } else { return(null); } } catch (Exception ex) { this.logger.Error("Error authenticating user " + userName, ex); throw; } finally { if (de != null) { de.Dispose(); } if (up != null) { up.Dispose(); } if (pc != null) { pc.Dispose(); } } }
public void UpdateUser(UsersObject updateUser, bool isSuperOrResellerAdmin) { CPDatabase database = null; ADGroup ldapGroup = null; ADUser ldapUser = null; try { database = new CPDatabase(); // Get the user from the database var foundUser = (from u in database.Users where u.UserPrincipalName == updateUser.UserPrincipalName select u).FirstOrDefault(); if (foundUser == null) { ThrowEvent(AlertID.FAILED, "Unknown user " + updateUser.UserPrincipalName); } else { this.logger.Debug("Found user " + foundUser.UserPrincipalName + " in the database. Continuing..."); // Update the user values foundUser.Firstname = updateUser.Firstname; foundUser.Middlename = updateUser.Middlename; foundUser.Lastname = updateUser.Lastname; foundUser.DisplayName = updateUser.DisplayName; foundUser.Department = updateUser.Department; // Update user in Active Directory ldapUser = new ADUser(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); ldapUser.UpdateUser(updateUser, StaticSettings.AllowCustomNameAttribute); // Only update these values if super admin or reseller admin is modifying the user if (isSuperOrResellerAdmin) { this.logger.Debug("Super admin or reseller is updating user so we can check comapny admin permissions and reseller permissions"); foundUser.IsCompanyAdmin = updateUser.IsCompanyAdmin; foundUser.IsResellerAdmin = updateUser.IsResellerAdmin; // Get permissions from database var userPermissions = (from p in database.UserPermissions where p.UserID == foundUser.ID select p).FirstOrDefault(); // If the user is no longer a company admin then remove permissions from the database if (userPermissions != null && !updateUser.IsCompanyAdmin) { this.logger.Debug("User " + updateUser.UserPrincipalName + " is no longer a comapny admin. Need to remove rights from database and security group"); database.UserPermissions.Remove(userPermissions); // Remove from Admins@ security group ldapGroup = new ADGroup(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); ldapGroup.RemoveMember("Admins@" + updateUser.CompanyCode, updateUser.UserPrincipalName, "upn"); } else if (userPermissions != null && updateUser.IsCompanyAdmin) { this.logger.Debug("User " + updateUser.UserPrincipalName + " is a company admin. Need to update company admin rights in database."); // If user permissions was found and the user is company admin then update the values userPermissions.EnableExchange = updateUser.EnableExchangePerm; userPermissions.DisableExchange = updateUser.DisableExchangePerm; userPermissions.AddDomain = updateUser.AddDomainPerm; userPermissions.DeleteDomain = updateUser.DeleteDomainPerm; userPermissions.EnableAcceptedDomain = updateUser.EnableAcceptedDomainPerm; userPermissions.DisableAcceptedDomain = updateUser.DisableAcceptedDomainPerm; } else if (userPermissions == null && updateUser.IsCompanyAdmin) { this.logger.Debug("User " + updateUser.UserPrincipalName + " does not have any existing company admin rights. We need to add them to the database."); // No existing permissions were found and we need to add to database userPermissions = new UserPermission(); userPermissions.UserID = foundUser.ID; userPermissions.EnableExchange = updateUser.EnableExchangePerm; userPermissions.DisableExchange = updateUser.DisableExchangePerm; userPermissions.AddDomain = updateUser.AddDomainPerm; userPermissions.DeleteDomain = updateUser.DeleteDomainPerm; userPermissions.EnableAcceptedDomain = updateUser.EnableAcceptedDomainPerm; userPermissions.DisableAcceptedDomain = updateUser.DisableAcceptedDomainPerm; database.UserPermissions.Add(userPermissions); // Add to Admins@ security group ldapGroup = new ADGroup(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); ldapGroup.AddMember("Admins@" + updateUser.CompanyCode, updateUser.UserPrincipalName, "upn"); } } else { this.logger.Debug("User making changes to " + updateUser.UserPrincipalName + " is not a super admin or reseller admin. We cannot update company admin or reseller admin permissions unless the user making changes is a super or reseller admin."); } // Update database database.SaveChanges(); } } catch (Exception ex) { this.logger.Debug("Error updating user " + updateUser.UserPrincipalName, ex); ThrowEvent(AlertID.FAILED, ex.Message); } finally { if (ldapUser != null) { ldapUser.Dispose(); } if (ldapGroup != null) { ldapGroup.Dispose(); } if (database != null) { database.Dispose(); } } }
public UsersObject Authenticate(string username, string password, string ipAddress, bool isLocalRequest) { ADUser ldap = null; CPDatabase database = null; try { // Check if IP address is blocked from brute force if (IsBlockedFromBruteForce(ipAddress) && !isLocalRequest) { ThrowEvent(AlertID.FAILED, "Your IP has been blocked"); return(null); } else { database = new CPDatabase(); // Find the user in SQL first var user = (from d in database.Users where d.UserPrincipalName == username select d).FirstOrDefault(); ldap = new ADUser(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); // Authenticate the user UsersObject userObject = ldap.Authenticate(username, password); if (userObject == null) { // Audit the login AuditLogin(username, ipAddress, false); ThrowEvent(AlertID.FAILED, username + " failed to login."); return(null); } else { // Audit the login AuditLogin(username, ipAddress, true); // Now check the groups string[] cpGroups = StaticSettings.SuperAdmins.ToLower().Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); // User could be null if it is a domain admin which won't be in the database. if (user != null) { userObject.CompanyCode = user.CompanyCode; userObject.ResellerCode = GetResellerCode(user.CompanyCode); if (user.IsCompanyAdmin != null && (bool)user.IsCompanyAdmin) { userObject.IsCompanyAdmin = true; } if (user.IsResellerAdmin != null && (bool)user.IsResellerAdmin) { userObject.IsResellerAdmin = true; } } // Now check if they are a super admin foreach (string g in cpGroups) { var isFound = userObject.Groups.Where(a => a.ToLower().StartsWith("cn=" + g)).Count(); if (isFound > 0) { userObject.IsSuperAdmin = true; break; } } return(userObject); } } } catch (Exception ex) { this.logger.Error("Error logging in user " + username, ex); ThrowEvent(AlertID.FAILED, ex.Message); return(null); } finally { if (database != null) { database.Dispose(); } if (ldap != null) { ldap.Dispose(); } } }
/// <summary> /// 更新员工 /// </summary> /// <param name="uo"></param> /// <returns></returns> public static int UpdateUser(UsersObject uo) { int a = User_DAL.UpdateUser(uo); return a; }
protected void Page_Load(object sender, EventArgs e) { userlist = new List <UsersObject>(); usernames = new List <String>(); firstnames = new List <String>(); lastnames = new List <String>(); names = new List <String>(); populateEventDropdown(); imageSource = displayPrize(); loyaltyWinner = new entry <string, int, int>(); String UserInfo = ConfigurationManager.ConnectionStrings["KcGameOnSQL"].ConnectionString; MySqlDataReader Reader = null; MySqlCommand cmd = null; MySqlConnection conn = null; try { conn = new MySqlConnection(UserInfo); conn.Open(); userlist = new List <UsersObject>(); usernames = new List <String>(); firstnames = new List <String>(); lastnames = new List <String>(); names = new List <String>(); cmd = new MySqlCommand("getUsers", conn); cmd.CommandType = System.Data.CommandType.StoredProcedure; IAsyncResult result = cmd.BeginExecuteReader(); Reader = cmd.EndExecuteReader(result); //Reader = cmd.ExecuteReader(); //DefaultHTML = new StringBuilder(); while (Reader.Read()) { string username = Reader.GetString("UserName").ToString(); string first = Reader.GetString("FirstName").ToString(); string last = Reader.GetString("LastName").ToString(); UsersObject newUser = new UsersObject(username, first, last); usernames.Add(username); firstnames.Add(first); lastnames.Add(last); names.Add(first + ' ' + last); userlist.Add(newUser); } Reader.Close(); Reader = null; names.Sort(); usernames.Sort(); firstnames.Sort(); lastnames.Sort(); if (SessionVariables.UserName != null) { if (current != null) { if (current.Username != SessionVariables.UserName) { foreach (var user in userlist) { if (user.Username == SessionVariables.UserName.ToLower()) { current = user; } } } } } //populate user table in admin page cmd = new MySqlCommand("SELECT DISTINCT * FROM payTable WHERE eventID = (SELECT EventID FROM kcgameon.schedule WHERE Active = 1 order by ID LIMIT 1) AND verifiedPaid = \'Y\' AND activeIndicator=\'TRUE\'", new MySqlConnection(UserInfo)); cmd.CommandType = System.Data.CommandType.Text; cmd.Connection.Open(); Reader = cmd.ExecuteReader(); AdminUserHTML = new StringBuilder(); while (Reader.Read()) { usersPaid.Add(Reader.GetString("userName")); } Reader.Close(); foreach (UsersObject user in userlist) { AdminUserHTML.AppendLine("<tr>"); AdminUserHTML.AppendLine("<td class=\"col-md-1\">").Append(user.Username).Append("</td>"); AdminUserHTML.AppendLine("<td class=\"col-md-1\">").Append(user.First).Append("</td>"); AdminUserHTML.AppendLine("<td class=\"col-md-1\">").Append(user.Last).Append("</td>"); if (usersPaid.Contains(user.Username)) { AdminUserHTML.AppendLine("<td class=\"col-md-1\">").Append("<img src=\'/img/Button-Check-icon.png\' height=\"20px\" width=\"20px\"/>").Append("</td>"); } else { AdminUserHTML.AppendLine("<td class=\"col-md-1\">").Append("<img src=\'/img/Actions-button-cancel-icon.png\' height=\"20px\" width=\"20px\"/>").Append("</td>"); } AdminUserHTML.AppendLine("</tr>"); } //raffle-populate user table in admin page cmd = new MySqlCommand("select ea.Username, ua.FirstName, ua.LastName, ea.eventID, ea.wondoor, ea.wonloyalty from EventArchive ea inner join useraccount ua on ea.Username = ua.Username WHERE (eventID IN (SELECT EventID FROM kcgameon.schedule WHERE TournamentDate LIKE '%2016%' order by ID) OR eventID = '2016') and wondoor != 0 ", new MySqlConnection(UserInfo)); cmd.CommandType = System.Data.CommandType.Text; cmd.Connection.Open(); Reader = cmd.ExecuteReader(); RaffleHTML = new StringBuilder(); while (Reader.Read()) { RaffleHTML.AppendLine("<tr>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("Username")).Append("</td>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("FirstName")).Append("</td>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("LastName")).Append("</td>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("eventID")).Append("</td>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("wondoor")).Append("</td>"); RaffleHTML.AppendLine("<td class=\"col-md-1\">").Append(Reader.GetString("wonloyalty")).Append("</td>"); RaffleHTML.AppendLine("</tr>"); } Reader.Close(); //populate checked in users for raffle cmd = new MySqlCommand("SELECT DISTINCT * FROM EventArchive WHERE eventID = (SELECT EventID FROM kcgameon.schedule WHERE Active = 1 order by ID LIMIT 1) AND checkedin = 1 AND activeIndicator = 1", new MySqlConnection(UserInfo)); cmd.CommandType = System.Data.CommandType.Text; cmd.Connection.Open(); Reader = cmd.ExecuteReader(); while (Reader.Read()) { if (Reader["userName"] != DBNull.Value) { if (!usersCheckedIn.ContainsKey(Reader.GetString("userName"))) { usersCheckedIn.Add(Reader.GetString("userName"), Reader.GetByte("wonloyalty")); } } } Reader.Close(); //populate checked in users for loyalty event cmd = new MySqlCommand("SELECT DISTINCT * FROM EventArchive WHERE eventID >=69 AND checkedin = 1 AND activeIndicator = 1;", new MySqlConnection(UserInfo)); cmd.CommandType = System.Data.CommandType.Text; cmd.Connection.Open(); Reader = cmd.ExecuteReader(); while (Reader.Read()) { if (Reader["userName"] != DBNull.Value) { //If loyaltyRaffle does NOT have the existing userName and eventID pair, add it with if (!(loyaltyRaffle.Any(entry => entry.Name.Contains(Reader.GetString("userName")) && entry.Event == Reader.GetInt32("eventID")))) { entry <string, int, int> user = new entry <string, int, int>(); user.Name = Reader.GetString("userName"); user.Event = Reader.GetInt32("eventID"); user.Won = Reader.GetByte("wonloyalty"); loyaltyRaffle.Add(user); } } } Reader.Close(); } catch (Exception) { } finally { if (cmd.Connection != null) { cmd.Connection.Close(); } if (Reader != null) { Reader.Close(); } if (conn != null) { conn.Close(); } } }
internal void UpdateExchangeSection() { object userObject = ViewState["CPCurrentEditUser"]; object mailboxObject = ViewState["CPCurrentEditMailbox"]; if (userObject == null) { alertmessage.SetMessage(AlertID.FAILED, "Viewstate was null. Please contact support"); } else { UsersViewModel viewModel = new UsersViewModel(); viewModel.ViewModelEvent += viewModel_ViewModelEvent; UsersObject user = userObject as UsersObject; if (!cbEditIsMailboxEnabled.Checked && user.MailboxPlan > 0) { // // We are disabling the mailbox for this user // viewModel.DisableMailbox(user.UserPrincipalName); } else if (cbEditIsMailboxEnabled.Checked && user.MailboxPlan == 0) { // // We are creating a new mailbox // this.logger.Debug("Attempting to create new mailbox for " + user.UserPrincipalName); user = new UsersObject(); user.CompanyCode = WebSessionHandler.SelectedCompanyCode; user.UserPrincipalName = hfEditUserPrincipalName.Value; user.PrimarySmtpAddress = string.Format("{0}@{1}", txtEditMailboxEmail.Text.Replace(" ", string.Empty), ddlEditMailboxDomain.SelectedItem.Text); user.ActiveSyncPlan = ddlEditMailboxASPlan.SelectedIndex > 0 ? int.Parse(ddlEditMailboxASPlan.SelectedValue) : 0; user.MailboxPlan = int.Parse(ddlEditMailboxPlan.SelectedValue); user.SetMailboxSizeInMB = int.Parse(hfEditSelectedMailboxSize.Value); user.ForwardingTo = ddlEditMailboxForwardTo.SelectedIndex > 0 ? ddlEditMailboxForwardTo.SelectedValue : string.Empty; user.DeliverToMailboxAndForward = cbEditMailboxForwardBoth.Checked; this.logger.Debug("Validating email addresses for " + user.UserPrincipalName); user.EmailAliases = new List <string>(); if (emailAliases != null) { foreach (MailAliasObject a in emailAliases) { if (!a.Email.Equals(user.PrimarySmtpAddress)) { user.EmailAliases.Add(a.Email); } } } this.logger.Debug("Validating access permissions for " + user.UserPrincipalName); user.FullAccessUsers = new List <string>(); foreach (int i in ddlEditMailboxFullAccess.GetSelectedIndices()) { user.FullAccessUsers.Add(ddlEditMailboxFullAccess.Items[i].Value); } user.SendAsUsers = new List <string>(); foreach (int i in ddlEditMailboxSendAs.GetSelectedIndices()) { user.SendAsUsers.Add(ddlEditMailboxSendAs.Items[i].Value); } user.SendOnBehalf = new List <string>(); foreach (int i in ddlEditMailboxSendOnBehalf.GetSelectedIndices()) { user.SendOnBehalf.Add(ddlEditMailboxSendOnBehalf.Items[i].Value); } // // Archiving // this.logger.Debug("Validating archiving settings for " + user.UserPrincipalName); if (cbEditMailboxEnableArchiving.Checked) { user.ArchivingEnabled = cbEditMailboxEnableArchiving.Checked; user.ArchiveName = txtEditMailboxArchiveName.Text.Trim(); user.ArchivePlan = ddlEditMailboxArchivePlan.SelectedIndex > 0 ? int.Parse(ddlEditMailboxArchivePlan.SelectedValue) : 0; } else { user.ArchivingEnabled = false; } // // Litigation Hold // this.logger.Debug("Validating litigation hold settings for " + user.UserPrincipalName); if (cbEditMailboxEnableLitigationHold.Checked) { user.LitigationHoldEnabled = cbEditMailboxEnableLitigationHold.Checked; user.LitigationHoldUrl = txtEditMailboxLitigationHoldURL.Text; user.LitigationHoldComment = txtEditMailboxLitigationHoldComments.Text; if (!string.IsNullOrEmpty(txtEditMailboxLitigationHoldDuration.Text)) { DateTime now = DateTime.Now; DateTime end; DateTime.TryParse(txtEditMailboxLitigationHoldDuration.Text, out end); if (end != null) { TimeSpan duration = end - now; user.LitigationHoldDuration = duration.Days; } else { user.LitigationHoldDuration = 0; } } else { user.LitigationHoldDuration = 0; } } viewModel.CreateMailbox(user); } else { // // We are updating an existing mailbox // } } }
internal void UpdateUserSection() { object userObject = ViewState["CPCurrentEditUser"]; if (userObject == null) { alertmessage.SetMessage(AlertID.FAILED, "Viewstate was null. Please contact support"); } else { UsersObject original = userObject as UsersObject; bool valuesHaveBeenUpdated = false; if (txtEditFirstName.Text != original.Firstname) { valuesHaveBeenUpdated = true; this.logger.Debug(string.Format("{0}: Found new value. Old Value: {0}, New Value: {1}", original.UserPrincipalName, original.Firstname, txtEditFirstName.Text)); } if (txtEditMiddleName.Text != original.Middlename) { valuesHaveBeenUpdated = true; this.logger.Debug(string.Format("{0}: Found new value. Old Value: {0}, New Value: {1}", original.UserPrincipalName, original.Middlename, txtEditMiddleName.Text)); } if (txtEditLastname.Text != original.Lastname) { valuesHaveBeenUpdated = true; this.logger.Debug(string.Format("{0}: Found new value. Old Value: {0}, New Value: {1}", original.UserPrincipalName, original.Lastname, txtEditLastname.Text)); } if (txtEditDisplayName.Text != original.DisplayName) { valuesHaveBeenUpdated = true; this.logger.Debug(string.Format("{0}: Found new value. Old Value: {0}, New Value: {1}", original.UserPrincipalName, original.DisplayName, txtEditDisplayName.Text)); } if (txtEditDepartment.Text != original.Department) { valuesHaveBeenUpdated = true; this.logger.Debug(string.Format("{0}: Found new value. Old Value: {0}, New Value: {1}", original.UserPrincipalName, original.Department, txtEditDepartment.Text)); } if (cbEditEnableUser.Checked != original.IsEnabled) { valuesHaveBeenUpdated = true; } // Only update these if reseller or super admin if (WebSessionHandler.IsSuperAdmin || WebSessionHandler.IsResellerAdmin) { if (cbEditIsCompanyAdmin.Checked != original.IsCompanyAdmin) { valuesHaveBeenUpdated = true; } if (cbEditEnableExchange.Checked != original.EnableExchangePerm) { valuesHaveBeenUpdated = true; } if (cbEditDisableExchange.Checked != original.DisableExchangePerm) { valuesHaveBeenUpdated = true; } if (cbEditAddDomain.Checked != original.AddDomainPerm) { valuesHaveBeenUpdated = true; } if (cbEditDeleteDomain.Checked != original.DeleteDomainPerm) { valuesHaveBeenUpdated = true; } if (cbEditEnableAcceptedDomain.Checked != original.EnableAcceptedDomainPerm) { valuesHaveBeenUpdated = true; } if (cbEditDisableAcceptedDomain.Checked != original.DisableAcceptedDomainPerm) { valuesHaveBeenUpdated = true; } if (WebSessionHandler.IsSuperAdmin) { if (cbEditIsResellerAdmin.Checked != original.IsResellerAdmin) { valuesHaveBeenUpdated = true; } } } // Update user if values have changed if (valuesHaveBeenUpdated) { UsersObject updateUser = new UsersObject(); updateUser.UserPrincipalName = hfEditUserPrincipalName.Value; updateUser.Firstname = txtEditFirstName.Text; updateUser.Middlename = txtEditMiddleName.Text; updateUser.Lastname = txtEditLastname.Text; updateUser.DisplayName = txtEditDisplayName.Text; updateUser.Department = txtEditDepartment.Text; updateUser.IsEnabled = cbEditEnableUser.Checked; updateUser.IsResellerAdmin = cbEditIsResellerAdmin.Checked; updateUser.IsCompanyAdmin = cbEditIsCompanyAdmin.Checked; updateUser.EnableExchangePerm = cbEditEnableExchange.Checked; updateUser.DisableExchangePerm = cbEditDisableExchange.Checked; updateUser.AddDomainPerm = cbEditAddDomain.Checked; updateUser.DeleteDomainPerm = cbEditDeleteDomain.Checked; updateUser.EnableAcceptedDomainPerm = cbEditEnableAcceptedDomain.Checked; updateUser.DisableAcceptedDomainPerm = cbEditDisableAcceptedDomain.Checked; UsersViewModel viewModel = new UsersViewModel(); viewModel.ViewModelEvent += viewModel_ViewModelEvent; viewModel.UpdateUser(updateUser, WebSessionHandler.IsSuperAdmin || WebSessionHandler.IsResellerAdmin); } } }
private void EditUser(string userPrincipalName) { UsersViewModel viewModel = new UsersViewModel(); viewModel.ViewModelEvent += viewModel_ViewModelEvent; // // // GET USER INFORMATION // // // UsersObject user = viewModel.GetUser(userPrincipalName); if (user != null) { lbProfileDisplayName.Text = user.DisplayName; lbProfileUsername.Text = user.UserPrincipalName; lbProfileSamAccountName.Text = user.sAMAccountName; hfEditUserPrincipalName.Value = user.UserPrincipalName; txtEditFirstName.Text = user.Firstname; txtEditMiddleName.Text = user.Middlename; txtEditLastname.Text = user.Lastname; txtEditDisplayName.Text = user.DisplayName; txtEditDepartment.Text = user.Department; cbEditIsCompanyAdmin.Checked = user.IsCompanyAdmin; cbEditIsResellerAdmin.Checked = user.IsResellerAdmin; cbEditEnableUser.Checked = user.IsEnabled; cbEditAddDomain.Checked = user.AddDomainPerm; cbEditDeleteDomain.Checked = user.DeleteDomainPerm; cbEditDisableAcceptedDomain.Checked = user.DisableAcceptedDomainPerm; cbEditDisableExchange.Checked = user.DisableExchangePerm; cbEditEnableAcceptedDomain.Checked = user.EnableAcceptedDomainPerm; cbEditEnableExchange.Checked = user.EnableExchangePerm; cbEditMailboxEnableArchiving.Checked = user.ArchivePlan > 0 ? true : false; // Get the user photo imgUserPhoto.ImageUrl = string.Format("services/UserPhotoHandler.ashx?id={0}", user.UserPrincipalName); // Set view state ViewState["CPCurrentEditUser"] = user; } // // // GET MAILBOX INFORMATION // // // _isExchangeEnabled = CompanyChecks.IsExchangeEnabled(WebSessionHandler.SelectedCompanyCode); if (_isExchangeEnabled) { // Get list of accepted domains PopulateEditUserView(); // Get mailbox information if (user != null) { if (user.MailboxPlan > 0) { cbEditIsMailboxEnabled.Checked = true; MailboxPlanObject mailboxPlan = viewModel.GetMailboxPlan(user.MailboxPlan); _currentMailboxSize = mailboxPlan.MailboxSizeInMB + user.AdditionalMB; ListItem item = ddlEditMailboxPlan.Items.FindByValue(mailboxPlan.MailboxPlanID.ToString()); if (item != null) { ddlEditMailboxPlan.SelectedValue = item.Value; } UsersObject mailboxUser = viewModel.GetUserMailbox(userPrincipalName); if (mailboxUser != null) { string[] primaryEmailAddress = mailboxUser.PrimarySmtpAddress.Split('@'); // Populate email information txtEditMailboxEmail.Text = primaryEmailAddress[0]; ListItem item2 = ddlEditMailboxDomain.Items.FindByText(primaryEmailAddress[1]); if (item2 != null) { ddlEditMailboxDomain.SelectedValue = item2.Value; } // Populate email aliases emailAliases = new List <MailAliasObject>(); foreach (string s in mailboxUser.EmailAliases) { emailAliases.Add(new MailAliasObject() { Email = s }); } ViewState["CPEmailAliases"] = emailAliases; gridEmailAliases.DataSource = emailAliases; gridEmailAliases.DataBind(); // Populate forwarding if (!string.IsNullOrEmpty(mailboxUser.ForwardingTo)) { ListItem fItem = ddlEditMailboxForwardTo.Items.FindByValue(mailboxUser.ForwardingTo); if (fItem != null) { ddlEditMailboxForwardTo.SelectedValue = fItem.Value; } else { ddlEditMailboxForwardTo.SelectedIndex = -1; } } cbEditMailboxForwardBoth.Checked = mailboxUser.DeliverToMailboxAndForward; // Populate permissions if (mailboxUser.FullAccessUsers != null) { foreach (string fullAccess in mailboxUser.FullAccessUsers) { ListItem fullItem = ddlEditMailboxFullAccess.Items.FindByValue(fullAccess); if (fullItem != null) { fullItem.Selected = true; } } } if (mailboxUser.SendAsUsers != null) { foreach (string sendAs in mailboxUser.SendAsUsers) { ListItem sendAsItem = ddlEditMailboxSendAs.Items.FindByValue(sendAs); if (sendAsItem != null) { sendAsItem.Selected = true; } } } if (mailboxUser.SendOnBehalf != null) { foreach (string sendOnBehalf in mailboxUser.SendOnBehalf) { ListItem sendOnBehalfItem = ddlEditMailboxSendOnBehalf.Items.FindByValue(sendOnBehalf); if (sendOnBehalfItem != null) { sendOnBehalfItem.Selected = true; } } } // Populate litigation hold cbEditMailboxEnableLitigationHold.Checked = mailboxUser.LitigationHoldEnabled; txtEditMailboxLitigationHoldURL.Text = mailboxUser.LitigationHoldUrl; txtEditMailboxLitigationHoldComments.Text = mailboxUser.LitigationHoldComment; if (mailboxUser.LitigationHoldDuration > 0) { DateTime now = DateTime.Now.AddDays(mailboxUser.LitigationHoldDuration); txtEditMailboxLitigationHoldDuration.Text = now.ToShortDateString(); } else { txtEditMailboxLitigationHoldDuration.Text = string.Empty; } // Populate archive if (user.ArchivePlan > 0) { txtEditMailboxArchiveName.Text = mailboxUser.ArchiveName; } else { txtEditMailboxArchiveName.Text = string.Empty; } ViewState["CPCurrentEditMailbox"] = mailboxUser; } } else { cbEditIsMailboxEnabled.Checked = false; } } } // Change panels panelCreateUser.Visible = false; panelUserList.Visible = false; panelEditUser.Visible = true; }
/// <summary> /// 删除用户对象 /// </summary> /// <param name="uo"></param> /// <returns></returns> public static int DeleteUserByObject(UsersObject uo) { int a = User_DAL.DeleteUserByObject(uo); return a; }
public void CreateMailbox(UsersObject user) { CPDatabase database = null; ExchangePowershell powershell = null; CloudPanelTransaction transaction = new CloudPanelTransaction(); try { database = new CPDatabase(); // Get the user from the database var foundUser = (from u in database.Users where u.UserPrincipalName == user.UserPrincipalName select u).FirstOrDefault(); powershell = new ExchangePowershell(StaticSettings.ExchangeURI, StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.ExchangeUseKerberos, StaticSettings.PrimaryDC); // Get the selected mailbox plan MailboxPlanObject mailboxPlan = GetMailboxPlan(user.MailboxPlan); // Create new mailbox and register transaction powershell.NewMailbox(user); transaction.NewMailbox(user.UserPrincipalName); // Update the mailbox values powershell.UpdateMailbox(user, mailboxPlan); powershell.UpdateCASMailbox(user, mailboxPlan); // Set litigation hold settings if enabled for litigation hold if (user.LitigationHoldEnabled) { powershell.NewLitigationHold(user.UserPrincipalName, user.LitigationHoldComment, user.LitigationHoldUrl, user.LitigationHoldDuration); } // Set archive settings if enabled for archiving if (user.ArchivingEnabled && user.ArchivePlan > 0) { powershell.NewArchiveMailbox(user); // Set quota on archive } foundUser.Email = user.PrimarySmtpAddress; foundUser.MailboxPlan = user.MailboxPlan; foundUser.AdditionalMB = user.SetMailboxSizeInMB - mailboxPlan.MailboxSizeInMB; foundUser.ExchArchivePlan = user.ArchivePlan; database.SaveChanges(); } catch (Exception ex) { this.logger.Error("Error creating mailbox for " + user.UserPrincipalName, ex); ThrowEvent(AlertID.FAILED, ex.Message); transaction.RollBack(); } finally { if (powershell != null) { powershell.Dispose(); } if (database != null) { database.Dispose(); } } }
/// <summary> /// 增加用户 /// </summary> /// <param name="uo"></param> /// <returns></returns> public static int AddUser(UsersObject uo) { int a = User_DAL.AddUser(uo); return a; }
/// <summary> /// Creates a new user /// </summary> /// <param name="user"></param> /// <param name="baseOrganizationalUnit"></param> /// <param name="isUsingDisplayNameAsNameAttribute"></param> public UsersObject NewUser(UsersObject user, string companyUsersPath, bool isUsingDisplayNameAsNameAttribute) { PrincipalContext pc = null; UserPrincipalExt up = null; try { pc = new PrincipalContext(ContextType.Domain, this.domainController, companyUsersPath, this.username, this.password); logger.Debug("Looking to see if user already exists: " + user.UserPrincipalName); bool doesExist = DoesUserPrincipalNameExist(user.UserPrincipalName); if (doesExist) { throw new Exception("User already exists"); } else { // Find an available sAMAccountName user.sAMAccountName = GetAvailableSamAccountName(user.UserPrincipalName); // User was not found so lets create the new user up = new UserPrincipalExt(pc, user.sAMAccountName, user.Password, true); up.UserPrincipalName = user.UserPrincipalName; up.DisplayName = user.DisplayName; up.PasswordNeverExpires = user.PasswordNeverExpires; if (isUsingDisplayNameAsNameAttribute) { up.Name = user.DisplayName; } else { up.Name = user.UserPrincipalName; } if (!string.IsNullOrEmpty(user.Firstname)) { up.GivenName = user.Firstname; } if (!string.IsNullOrEmpty(user.Middlename)) { up.MiddleName = user.Middlename; } if (!string.IsNullOrEmpty(user.Lastname)) { up.LastName = user.Lastname; } if (!string.IsNullOrEmpty(up.Department)) { up.Department = user.Department; } up.Save(); // Get the user's GUID user.UserGuid = (Guid)up.Guid; // Get the user's distinguished name user.DistinguishedName = up.DistinguishedName; // Return the user with the information return(user); } } catch (Exception ex) { this.logger.Error("Error creating new user " + user.UserPrincipalName, ex); throw; } finally { if (up != null) { up.Dispose(); } if (pc != null) { pc.Dispose(); } } }
/// <summary> /// 根据条件查询单个用户 /// </summary> /// <param name="sql"></param> /// <returns></returns> public static UsersObject GetOneUserByCondition(string sql) { UsersObject uo = User_DAL.GetOneUserByCondition(sql); return uo; }
/// <summary> /// Updates a user in Active Directory /// </summary> /// <param name="user"></param> /// <param name="isUsingDisplayNameAsNameAttribute"></param> public void UpdateUser(UsersObject user, bool isUsingDisplayNameAsNameAttribute) { PrincipalContext pc = null; UserPrincipalExt up = null; try { pc = new PrincipalContext(ContextType.Domain, this.domainController, this.username, this.password); logger.Debug("Finding user in Active Directory: " + user.UserPrincipalName); up = UserPrincipalExt.FindByIdentity(pc, IdentityType.UserPrincipalName, user.UserPrincipalName); if (up == null) { throw new Exception("USER IS UNKNOWN"); } else { up.GivenName = user.Firstname; up.DisplayName = user.DisplayName; up.Enabled = user.IsEnabled; if (!string.IsNullOrEmpty(user.Middlename)) { up.MiddleName = user.Middlename; } else { up.MiddleName = null; } if (!string.IsNullOrEmpty(user.Lastname)) { up.LastName = user.Lastname; } else { up.LastName = null; } if (!string.IsNullOrEmpty(user.Department)) { up.Department = user.Department; } else { up.Department = null; } if (isUsingDisplayNameAsNameAttribute) { up.Name = user.DisplayName; } // Save changes up.Save(); } } catch (Exception ex) { this.logger.Error("Error updating user " + user.UserPrincipalName, ex); throw; } finally { if (up != null) { up.Dispose(); } if (pc != null) { pc.Dispose(); } } }
protected void btnLogin_Click(object sender, EventArgs e) { LoginViewModel login = new LoginViewModel(); login.ViewModelEvent += login_ViewModelEvent; string ip = HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]; if (string.IsNullOrEmpty(ip)) { ip = HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]; } else { ip = ip.Split(',')[0]; } UsersObject user = login.Authenticate(txtUsername.Text, txtPassword.Text, ip, Request.IsLocal); if (user != null) { // User is authenticated FormsAuthenticationTicket ticket = new FormsAuthenticationTicket(1, txtUsername.Text, DateTime.Now, DateTime.Now.AddHours(8), true, ""); string cookieEncrypt = FormsAuthentication.Encrypt(ticket); HttpCookie cookie = new HttpCookie(FormsAuthentication.FormsCookieName, cookieEncrypt); cookie.Path = FormsAuthentication.FormsCookiePath; Response.Cookies.Add(cookie); if (user.IsSuperAdmin) { WebSessionHandler.IsSuperAdmin = true; } if (user.IsResellerAdmin) { WebSessionHandler.IsResellerAdmin = true; WebSessionHandler.SelectedResellerCode = user.ResellerCode; } if (user.IsCompanyAdmin) { WebSessionHandler.IsCompanyAdmin = true; WebSessionHandler.SelectedResellerCode = user.ResellerCode; WebSessionHandler.SelectedCompanyCode = user.CompanyCode; } if (!string.IsNullOrEmpty(user.DisplayName)) { WebSessionHandler.DisplayName = user.DisplayName; } else { WebSessionHandler.DisplayName = txtUsername.Text; } // Redirect to dashbaord Server.Transfer("~/dashboard.aspx"); } }
public void CreateUser(UsersObject newUser) { CPDatabase database = null; ADGroup ldapGroup = null; ADUser ldapUser = null; CloudPanelTransaction newUserTransaction = new CloudPanelTransaction(); try { // Insert into database database = new CPDatabase(); // Make sure the user doesn't already exist var foundUser = (from u in database.Users where u.UserPrincipalName == newUser.UserPrincipalName select u).FirstOrDefault(); if (foundUser != null) { ThrowEvent(AlertID.FAILED, "User already exists " + newUser.UserPrincipalName); } else { // Get the company's OU where we need to save the user var companyDistinguishedName = (from c in database.Companies where !c.IsReseller where c.CompanyCode == newUser.CompanyCode select c.DistinguishedName).First(); // Check if they are using a custom user's OU if (!string.IsNullOrEmpty(StaticSettings.UsersOU)) { companyDistinguishedName = string.Format("OU={0},{1}", StaticSettings.UsersOU, companyDistinguishedName); } ldapUser = new ADUser(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); UsersObject createdUser = ldapUser.NewUser(newUser, companyDistinguishedName, StaticSettings.AllowCustomNameAttribute); newUserTransaction.NewUser(createdUser.UserPrincipalName); // Add the users to the groups ldapGroup = new ADGroup(StaticSettings.Username, StaticSettings.DecryptedPassword, StaticSettings.PrimaryDC); ldapGroup.AddMember("AllUsers@" + newUser.CompanyCode, createdUser.UserPrincipalName, "upn"); if (newUser.IsCompanyAdmin) { ldapGroup.AddMember("Admins@" + newUser.CompanyCode, createdUser.UserPrincipalName, "upn"); } // Insert into database User sqlUser = new User(); sqlUser.UserGuid = createdUser.UserGuid; sqlUser.CompanyCode = createdUser.CompanyCode; sqlUser.sAMAccountName = createdUser.sAMAccountName; sqlUser.UserPrincipalName = createdUser.UserPrincipalName; sqlUser.DistinguishedName = createdUser.DistinguishedName; sqlUser.DisplayName = createdUser.DisplayName; sqlUser.Firstname = createdUser.Firstname; sqlUser.Middlename = createdUser.Middlename; sqlUser.Lastname = createdUser.Lastname; sqlUser.Email = string.Empty; sqlUser.Department = createdUser.Department; sqlUser.IsResellerAdmin = createdUser.IsResellerAdmin; sqlUser.IsCompanyAdmin = createdUser.IsCompanyAdmin; sqlUser.MailboxPlan = 0; sqlUser.TSPlan = 0; sqlUser.LyncPlan = 0; sqlUser.Created = DateTime.Now; sqlUser.AdditionalMB = 0; sqlUser.ActiveSyncPlan = 0; database.Users.Add(sqlUser); // Insert permissions into database if (createdUser.IsCompanyAdmin) { UserPermission newPermissions = new UserPermission(); newPermissions.UserID = sqlUser.ID; newPermissions.EnableExchange = createdUser.EnableExchangePerm; newPermissions.DisableExchange = createdUser.DisableExchangePerm; newPermissions.AddDomain = createdUser.AddDomainPerm; newPermissions.DeleteDomain = createdUser.DeleteDomainPerm; newPermissions.EnableAcceptedDomain = createdUser.EnableAcceptedDomainPerm; newPermissions.DisableAcceptedDomain = createdUser.DisableAcceptedDomainPerm; database.UserPermissions.Add(newPermissions); } database.SaveChanges(); } } catch (Exception ex) { ThrowEvent(AlertID.FAILED, ex.Message); // Rollback on error newUserTransaction.RollBack(); } finally { if (ldapUser != null) { ldapUser.Dispose(); } if (ldapGroup != null) { ldapGroup.Dispose(); } if (database != null) { database.Dispose(); } } }