Esempio n. 1
0
        public ActionResult CreateUser(CreateUserVM user)
        {
            if (ModelState.IsValid)
            {
                using (var db = new ADWebDB())
                {
                    ADWeb.Core.Models.User newUser = Mapper.Map <User>(user);
                    ADDomain domain = new ADDomain();

                    // Get User Template Settings so that we can use it to create
                    // the user.
                    UserTemplate userTemplate = db.UserTemplate
                                                .Find(user.UserTemplateID);

                    UserTemplateSettings userTemplateSettings = new UserTemplateSettings();
                    userTemplateSettings.ChangePasswordAtNextLogon = userTemplate.ChangePasswordAtNextLogon;
                    userTemplateSettings.UserCannotChangePassword  = userTemplate.UserCannotChangePassword;
                    userTemplateSettings.PasswordNeverExpires      = userTemplate.PasswordNeverExpires;
                    userTemplateSettings.AccountExpires            = userTemplate.AccountExpires;
                    userTemplateSettings.ExpirationRange           = userTemplate.ExpirationRange;
                    userTemplateSettings.ExpirationValue           = userTemplate.ExpirationValue;
                    userTemplateSettings.DomainOU = userTemplate.DomainOU.DistinguishedName;

                    // When getting the groups associated with a user template, we
                    // are only interested in getting those groups that are active (i.e.
                    // they have not been removed by the admins of the application). If this is
                    // not done, then there will be an error if a group happens to have been
                    // added, removed and then added again by one of the administrators. This should
                    // be a rare occurrance, but we have to check just to make sure no errors occur
                    // when creating user accounts.
                    foreach (var group in userTemplate.Groups.Where(u => u.Enabled == true).ToList())
                    {
                        userTemplateSettings.Groups.Add(group.Name);
                    }

                    domain.CreateUserWithTemplate(newUser, userTemplateSettings);
                    ADUser currentUser = domain.GetUserByID(User.Identity.Name);

                    // Insert the account to the Database. Note: we are only
                    // interested in basic information
                    DomainUser newDomainUser = new DomainUser();
                    newDomainUser.DateCreated = DateTime.Now;
                    newDomainUser.CreatedBy   = currentUser.GivenName + " " + currentUser.Surname;
                    newDomainUser.Username    = newUser.Username;

                    db.DomainUsers.Add(newDomainUser);
                    db.SaveChanges();

                    TempData["user_created_successfully"] = newUser.FirstName + " " + newUser.LastName + " has been created successfully!";
                    return(RedirectToAction("ViewUser", new { user = user.Username }));
                }
            }

            return(View());
        }