コード例 #1
0
ファイル: Adws.svc.cs プロジェクト: sghaida/ADWS
        /// <summary>
        /// Create AD User in a container
        /// </summary>
        /// <param name="userinfo">ADUser object</param>
        /// <returns></returns>
        public ResponseMessage AddADUser( RequestUserCreate userinfo )
        {
            ResponseMessage status = new ResponseMessage();

            status.IsSuccessful = false;
            status.Message = string.Empty;

            Session stat = ValidateSession( userinfo.DomainInfo.SessionKey );

            if ( stat.IsAuthenticated == true )
            {

                PrincipalContext principalContext = null;

                string uri = FixADURI( userinfo.DomainInfo.ADHost , userinfo.DomainInfo.ContainerPath );

                if ( string.IsNullOrWhiteSpace( uri ) )
                {
                    status.Message = status.Message = "AD Host is not allowed to be empty, kindly provide the AD Host";
                    return status;
                }

                bool isAllowWite = CheckWriteOermission( uri , userinfo.DomainInfo.BindingUserName , userinfo.DomainInfo.BindingUserPassword );

                try
                {
                    UserPrincipal usr = FindADUser( userinfo.UserLogonName , userinfo.DomainInfo );
                    if ( usr != null )
                    {
                        status.Message = " user already exists. Please use a different User Logon Name";
                        return status;
                    }
                    else
                    {
                        principalContext = new PrincipalContext( ContextType.Domain , userinfo.DomainInfo.DomainName , userinfo.DomainInfo.ContainerPath , userinfo.DomainInfo.BindingUserName , userinfo.DomainInfo.BindingUserPassword );
                    }
                }
                catch ( Exception ex )
                {
                    status.Message = @"Failed to create PrincipalContext: " + ex;
                    return status;
                }

                // Create the new UserPrincipal object
                UserPrincipal userPrincipal = new UserPrincipal( principalContext );

                if ( !string.IsNullOrWhiteSpace( userinfo.LastName ) )
                    userPrincipal.Surname = userinfo.LastName;

                if ( !string.IsNullOrWhiteSpace( userinfo.FirstName ) )
                    userPrincipal.GivenName = userinfo.FirstName;

                if ( !string.IsNullOrWhiteSpace( userinfo.LastName ) && !string.IsNullOrWhiteSpace( userinfo.FirstName ) )
                    userPrincipal.DisplayName = userinfo.FirstName + " " + userinfo.LastName;

                if ( !string.IsNullOrWhiteSpace( userinfo.Description ) )
                    userPrincipal.Description = userinfo.Description;

                if ( !string.IsNullOrWhiteSpace( userinfo.EmployeeID ) )
                    userPrincipal.EmployeeId = userinfo.EmployeeID;

                if ( !string.IsNullOrWhiteSpace( userinfo.EmailAddress ) )
                    userPrincipal.EmailAddress = userinfo.EmailAddress;

                if ( !string.IsNullOrWhiteSpace( userinfo.Telephone ) )
                    userPrincipal.VoiceTelephoneNumber = userinfo.Telephone;

                if ( !string.IsNullOrWhiteSpace( userinfo.UserLogonName ) )
                    userPrincipal.SamAccountName = userinfo.UserLogonName;

                if ( !string.IsNullOrWhiteSpace( userinfo.Password ) )
                    userPrincipal.SetPassword( userinfo.Password );

                userPrincipal.Enabled = true;
                userPrincipal.ExpirePasswordNow();

                try
                {
                    userPrincipal.Save();

                    DirectoryEntry de = (DirectoryEntry)userPrincipal.GetUnderlyingObject();

                    FillUserExtraAttributes( ref de , userinfo );

                    de.CommitChanges();
                    status.Message = "Account has been created successfuly";
                    status.IsSuccessful = true;
                }
                catch ( Exception ex )
                {
                    status.Message = "Exception creating user object. " + ex;
                    status.IsSuccessful = false;
                    return status;
                }

                return status;
            }
            else
            {
                status.Message = "Kindly authenticate first";
                return status;
            }
        }
コード例 #2
0
ファイル: Adws.svc.cs プロジェクト: sghaida/ADWS
        private void FillUserExtraAttributes( ref DirectoryEntry de , RequestUserCreate userinfo )
        {
            try
            {
                if ( !string.IsNullOrWhiteSpace( userinfo.Title ) )
                    de.Properties[ "title" ].Value = userinfo.Title;

                if ( !string.IsNullOrWhiteSpace( userinfo.City ) )
                    de.Properties[ "l" ].Value = userinfo.City;

                if ( !string.IsNullOrWhiteSpace( userinfo.Country ) )
                    de.Properties[ "c" ].Value = userinfo.Country;

                if ( !string.IsNullOrWhiteSpace( userinfo.PostalCode ) )
                    de.Properties[ "postalCode" ].Value = userinfo.PostalCode;

                if ( !string.IsNullOrWhiteSpace( userinfo.PostOfficeBox ) )
                    de.Properties[ "postOfficeBox" ].Value = userinfo.PostOfficeBox;

                if ( !string.IsNullOrWhiteSpace( userinfo.Address ) )
                    de.Properties[ "streetAddress" ].Value = userinfo.Address;

                if ( !string.IsNullOrWhiteSpace( userinfo.Department ) )
                    de.Properties[ "department" ].Value = userinfo.Department;

                if ( !string.IsNullOrWhiteSpace( userinfo.PhysicalDeliveryOffice ) )
                    de.Properties[ "physicalDeliveryOfficeName" ].Value = userinfo.PhysicalDeliveryOffice;

                if ( !string.IsNullOrWhiteSpace( userinfo.Company ) )
                    de.Properties[ "company" ].Value = userinfo.Company;

                if ( !string.IsNullOrWhiteSpace( userinfo.PhoneExtention ) )
                    de.Properties[ "extensionAttribute1" ].Value = userinfo.PhoneExtention;

                if ( !string.IsNullOrWhiteSpace( userinfo.PhoneIpAccessCode ) )
                    de.Properties[ "extensionAttribute2" ].Value = userinfo.PhoneIpAccessCode;
            }
            catch ( Exception ex )
            {
                throw ex;
            }
        }