コード例 #1
0
        public ADUser GetADUserByEmail(string email, PrincipalContext ctx)
        {
            ADUser ret = new ADUser();

            ret.isValid = false;
            UserPrincipal uP = new UserPrincipal(ctx);
            Principal     pr = null;

            using (PrincipalSearcher searcher = new PrincipalSearcher(uP))
            {
                PrincipalSearchResult <Principal> results = searcher.FindAll();
                pr = results.FirstOrDefault(r => r.SamAccountName.Equals(email.Split('@')[0], StringComparison.InvariantCultureIgnoreCase));
                // it does not always find the user by sAM account. In this case, let's try to find by the email.
                if (pr == null)
                {
                    foreach (Principal result in results)
                    {
                        try
                        {
                            if (email.Equals((result as UserPrincipal).EmailAddress, StringComparison.InvariantCultureIgnoreCase))
                            {
                                pr = result;
                            }
                        }
                        catch { }
                    }
                }
                if (pr != null)
                {
                    UserPrincipal buff = pr as UserPrincipal;
                    ret.email     = buff.EmailAddress;
                    ret.firstName = buff.Name.Split(' ')[0];
                    ret.lastName  = buff.Name.Split(' ')[1];
                    ret.sam       = buff.SamAccountName;
                }
            }
            return(ret);
        }
コード例 #2
0
        public ActionResult Create([Bind(Include = "Id,ContactName,UserId,Organisation,Telephone,Email,ContactStatusId,ContactNotes")] ContactsModels contactsModels)
        {
            if (contactsModels.UserId == null)
            {
                //lets try to find the userId from the UserName
                string userName = contactsModels.ContactName;
                string email    = contactsModels.Email.ToLower();
                email = email.Replace("ncl", "newcastle");
                using (PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "campus.ncl.ac.uk"))
                {
                    PrincipalSearcher search = new PrincipalSearcher();
                    UserPrincipal     user   = new UserPrincipal(ctx);
                    user.Enabled       = true;
                    user.DisplayName   = userName;
                    user.EmailAddress  = email;
                    search.QueryFilter = user;
                    PrincipalSearchResult <Principal> results = search.FindAll();

                    if (results.Count() == 1)
                    {
                        //have definitely found the user and can now save the users ID
                        contactsModels.UserId = results.FirstOrDefault().SamAccountName;
                    }
                }
            }

            if (ModelState.IsValid)
            {
                db.ContactsModels.Add(contactsModels);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            ViewBag.ContactStatusId = new SelectList(db.ContactStatusModels.Where(s => s.Deleted == null), "Id", "ContactStatusName", contactsModels.ContactStatusId);
            return(View(contactsModels));
        }