private LdapState BaseLdapSearch(IList <string> otherReturnedAttributes, out IList <ILdapUser> searchResult, string searchFilter) { searchResult = new List <ILdapUser>(); otherReturnedAttributes = otherReturnedAttributes == null?_baseAttributes.ToList() : _baseAttributes.Union(otherReturnedAttributes).ToList(); try { searchResult = LdapUserUtils.ConvertToLdapUsers((SearchResponse)_ldapConnection.SendRequest( LdapRequestBuilder.GetSearchUserRequest(_configRepository.GetSearchBaseDn(), searchFilter, otherReturnedAttributes ))); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapSearchUserError)); return(LdapState.LdapSearchUserError); } if (searchResult.Count == 0) { _logger.Write(_logger.BuildLogMessage("Search Operation with NO RESULTS", LdapState.LdapSearchUserError)); return(LdapState.LdapSearchUserError); } _logger.Write(_logger.BuildLogMessage("Search Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
public LdapState SearchUsers(IList <string> otherReturnedAttributes, string[] searchedUsers, out IList <ILdapUser> searchResult) { searchResult = new List <ILdapUser>(); otherReturnedAttributes = otherReturnedAttributes == null?_baseAttributes.ToList() : _baseAttributes.Union(otherReturnedAttributes).ToList(); try { //Foreach all the credential,for everyone do the search and add user results to the out parameter searchResult = searchedUsers.Select( users => (SearchResponse)_ldapConnection.SendRequest( LdapRequestBuilder.GetSearchUserRequest(_configRepository.GetSearchBaseDn(), LdapFilterBuilder.GetSearchFilter(_configRepository.GetUserObjectClass(), _configRepository.GetMatchFieldName(), users), otherReturnedAttributes) )) .Aggregate(searchResult, (current, searchReturn) => current.Concat(LdapUserUtils.ConvertToLdapUsers(searchReturn)).ToList()); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapSearchUserError)); return(LdapState.LdapSearchUserError); } if (searchResult.Count == 0) { _logger.Write(_logger.BuildLogMessage("Search Operation with NO RESULTS", LdapState.LdapSearchUserError)); return(LdapState.LdapSearchUserError); } _logger.Write(_logger.BuildLogMessage("Search Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
/// <summary> /// Delete an LDAPUser /// </summary> /// <param name="user">User to delete</param> /// <returns>Success or Failed</returns> public LdapState DeleteUser(ILdapUser user) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetDeleteRequest(user)); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapDeleteUserError)); return(LdapState.LdapDeleteUserError); } _logger.Write(_logger.BuildLogMessage("Delete User Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
public void SearchRequest() { string ldapSearchFilter = String.Format("(&(objectClass={0})({1}={2}))", ObjectClass, "cn", UserCn); const string baseDn = "o=ApexNet,ou=People,dc=maxcrc,dc=com"; var attributes = new List <string> { "cn", "sn" }; SearchRequest req = LdapRequestBuilder.GetSearchUserRequest(baseDn, ldapSearchFilter, attributes); Assert.AreEqual(baseDn, req.DistinguishedName); Assert.AreEqual(ldapSearchFilter, req.Filter); Assert.AreEqual(SearchScope.Subtree, req.Scope); CollectionAssert.AreEqual(attributes, req.Attributes); }
public void AddRequest() { AddRequest req = LdapRequestBuilder.GetAddRequest(_testUser, ObjectClass); Assert.AreEqual(UserDn, req.DistinguishedName); Assert.IsTrue(req.Attributes.Count == 5); //POCHO CollectionAssert.AreEqual(req.Attributes[0], new DirectoryAttribute("objectClass", ObjectClass)); CollectionAssert.AreEqual(req.Attributes[1], new DirectoryAttribute("cn", UserCn)); CollectionAssert.AreEqual(req.Attributes[2], new DirectoryAttribute("sn", "test")); CollectionAssert.AreEqual(req.Attributes[3], new DirectoryAttribute("userPassword", UserPwd)); CollectionAssert.AreEqual(req.Attributes[4], new DirectoryAttribute("description", "Test Description")); }
/// <summary> /// Create a new LDAPUser /// </summary> /// <param name="newUser">User to create</param> /// <returns> Success or Failed</returns> public LdapState CreateUser(ILdapUser newUser) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetAddRequest(newUser, _configRepository.GetUserObjectClass())); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapCreateUserError)); return(LdapState.LdapCreateUserError); } _logger.Write(_logger.BuildLogMessage("Create User Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
public void ModifyPasswordRequest() { ModifyRequest req = LdapRequestBuilder.GetModifyPasswordRequest(_testUser, "new pwd"); Assert.AreEqual(UserDn, req.DistinguishedName); var attributeModification = new DirectoryAttributeModification { Operation = DirectoryAttributeOperation.Replace, Name = "userPassword", }; attributeModification.Add("new pwd"); CollectionAssert.AreEqual(req.Modifications[0], attributeModification); }
public void ModifyRequest() { ModifyRequest req = LdapRequestBuilder.GetModifyRequest(_testUser, DirectoryAttributeOperation.Replace, "description", "Test Description 2"); Assert.AreEqual(UserDn, req.DistinguishedName); var attributeModification = new DirectoryAttributeModification { Operation = DirectoryAttributeOperation.Replace, Name = "description", }; attributeModification.Add("Test Description 2"); CollectionAssert.AreEqual(req.Modifications[0], attributeModification); }
/// <summary> /// Change an LDAPUser's Password /// </summary> /// <param name="user">LDAPUser to change the password</param> /// <param name="newPwd">New Passowrd</param> /// <returns>Success or Failed</returns> public LdapState ChangeUserPassword(ILdapUser user, string newPwd) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyPasswordRequest(user, newPwd)); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapChangeUserPasswordError)); return(LdapState.LdapChangeUserPasswordError); } user.OverwriteUserAttribute("userPassword", newPwd); _logger.Write(_logger.BuildLogMessage("Change Password Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
/// <summary> /// Modify an LDAPUser Attribute /// </summary> /// <param name="operationType">Operation to execute on the attribute</param> /// <param name="user">LDAPUser's Attribute</param> /// <param name="attributeName">Attribute name</param> /// <param name="attributeValue">Attribute Value</param> /// <returns>Success or Failed</returns> public LdapState ModifyUserAttribute(DirectoryAttributeOperation operationType, ILdapUser user, string attributeName, string attributeValue) { try { _ldapConnection.SendRequest(LdapRequestBuilder.GetModifyRequest(user, operationType, attributeName, attributeValue)); } catch (Exception e) { _logger.Write(_logger.BuildLogMessage(e.Message, LdapState.LdapModifyUserAttributeError)); return(LdapState.LdapModifyUserAttributeError); } user.GetUserOperation(operationType, attributeName, attributeValue)(); _logger.Write(_logger.BuildLogMessage("Modify User Attribute Operation Success", LdapState.LdapUserManipulatorSuccess)); return(LdapState.LdapUserManipulatorSuccess); }
public void DeleteRequest() { DeleteRequest req = LdapRequestBuilder.GetDeleteRequest(_testUser); Assert.AreEqual(UserDn, req.DistinguishedName); }