Создать нового пользователя AD с уникальным именем пользователя - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть веб-представление, которое берет имя и фамилию человека и пытается создать нового пользователя в активном каталоге, используя контекст именования из первой буквы имени + фамилии.Это прекрасно работает, однако при создании нескольких пользователей с одинаковыми фамилией и именем, которые начинаются с одного и того же символа (т. Е. Andy Gordan => agordan | Alex Gordan => agordan), возникают ошибки, поскольку пользователь с таким именем уже существуетсуществовать.

Как добавить приведенный ниже оператор if / else, который проверяет активный каталог, чтобы увидеть, существует ли имя пользователя, и, если это так, добавить среднюю букву после имени (Alex M Gordan => agordan, следующий пользовательвошел: Энди М Гордан => Амгордан).

[HttpPost]
public ActionResult Index(CreateUser model)
{
    //Domain name
    var domainName = "XXX";
    //Fully distinguished name of OU to create user in
    var location = model.Location;
    var userOU = "OU=" + location + ",OU=XXX,DC=XXX,DC=com"; 

    using (var pc = new PrincipalContext(ContextType.Domain, domainName, userOU))
    {
        using (var up = new UserPrincipal(pc))
        {
            //Creates username and display name from firstname and lastname
            **var userName = model.FirstName[0].ToString().ToLower() + model.LastName.ToString().ToLower();**

            var displayName = model.FirstName + " " + model.LastName;
            var password = "XXX";

            up.Name = displayName;
            up.DisplayName = displayName;
            up.GivenName = model.FirstName;
            up.MiddleName = model.MiddleI;
            up.Surname = model.LastName;
            up.SamAccountName = userName;
            up.EmailAddress = userName + "@XXX.com";
            up.UserPrincipalName = userName + "@XXX.com";
            up.SetPassword(password);
            up.Enabled = true;
            up.ExpirePasswordNow();

            try
            {
                //Attempt to save the account to AD
                up.Save();
            }
            catch (Exception e)
            {
                ModelState.AddModelError("", "Exception creating user object. " + e);
                return View(model);
            }

            //Set department to add
            DirectoryEntry entry = up.GetUnderlyingObject() as DirectoryEntry;

            //DirectoryEntry group = entry.Children.Add("CN="+ )
            entry.Properties["department"].Value = model.Department;
            //entry.Properties["member"].Add(up);
            try
            {
                //try and commit the changes
                entry.CommitChanges();
            }
            catch(Exception e)
            {
                ModelState.AddModelError("", "Exception adding department. " + e);
                return View(model);
            }
        }
    }

    //Redirect to completed page if successful
    return RedirectToAction("Completed");

}//POST Index
...