コード例 #1
0
        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();
                }
            }
        }
コード例 #2
0
ファイル: User_DAL.cs プロジェクト: wangjipen/XT178-MES-
 /// <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));
     }
 }
コード例 #3
0
ファイル: User_DAL.cs プロジェクト: wangjipen/XT178-MES-
        /// <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));
        }
コード例 #4
0
        /// <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();
                }
            }
        }
コード例 #5
0
ファイル: Admin.aspx.cs プロジェクト: Aseeraa/KCGameOn
        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...");
        }
コード例 #6
0
        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();
        }
コード例 #7
0
        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("تم تغير الصورة بنـجاح"));
        }
コード例 #8
0
        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));
            }
        }
コード例 #9
0
        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));
            }
        }
コード例 #10
0
        /// <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();
                }
            }
        }
コード例 #11
0
        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();
                }
            }
        }
コード例 #12
0
        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();
                }
            }
        }
コード例 #13
0
ファイル: User_BLL.cs プロジェクト: wangjipen/XT178-MES-
 /// <summary>
 /// 更新员工
 /// </summary>
 /// <param name="uo"></param>
 /// <returns></returns>
 public static int UpdateUser(UsersObject uo)
 {
     int a = User_DAL.UpdateUser(uo);
     return a;
 }
コード例 #14
0
ファイル: Admin.aspx.cs プロジェクト: Aseeraa/KCGameOn
        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();
                }
            }
        }
コード例 #15
0
        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
                    //
                }
            }
        }
コード例 #16
0
        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);
                }
            }
        }
コード例 #17
0
        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;
        }
コード例 #18
0
ファイル: User_BLL.cs プロジェクト: wangjipen/XT178-MES-
 /// <summary>
 /// 删除用户对象
 /// </summary>
 /// <param name="uo"></param>
 /// <returns></returns>
 public static int DeleteUserByObject(UsersObject uo)
 {
     int a = User_DAL.DeleteUserByObject(uo);
     return a;
 }
コード例 #19
0
        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();
                }
            }
        }
コード例 #20
0
ファイル: User_BLL.cs プロジェクト: wangjipen/XT178-MES-
 /// <summary>
 /// 增加用户
 /// </summary>
 /// <param name="uo"></param>
 /// <returns></returns>
 public static int AddUser(UsersObject uo)
 {
     int a = User_DAL.AddUser(uo);
     return a;
 }
コード例 #21
0
        /// <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();
                }
            }
        }
コード例 #22
0
ファイル: User_BLL.cs プロジェクト: wangjipen/XT178-MES-
 /// <summary>
 /// 根据条件查询单个用户
 /// </summary>
 /// <param name="sql"></param>
 /// <returns></returns>
 public static UsersObject GetOneUserByCondition(string sql)
 {
     UsersObject uo = User_DAL.GetOneUserByCondition(sql);
     return uo;
 }
コード例 #23
0
        /// <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();
                }
            }
        }
コード例 #24
0
        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");
            }
        }
コード例 #25
0
        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();
                }
            }
        }