{"_id":"@3kles/3kles-ldap","_rev":"3-ed330efd478b59bed47cbce974d53232","name":"@3kles/3kles-ldap","dist-tags":{"latest":"2.0.1"},"versions":{"2.0.0":{"name":"@3kles/3kles-ldap","version":"2.0.0","keywords":["3KLES","Express","Core","Router","Service","Http","LDAP","Active directory"],"author":{"name":"Jeremy Chaut"},"license":"ISC","_id":"@3kles/3kles-ldap@2.0.0","maintainers":[{"name":"freazgo","email":"r.nguyen@3kles-consulting.com"},{"name":"jchaut","email":"j.chaut@3kles-consulting.com"},{"name":"cdasilvacosta","email":"c.dasilvacosta@3kles-consulting.com"},{"name":"qcampos","email":"q.campos@3kles-consulting.com"}],"homepage":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap","bugs":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap/issues"},"dist":{"shasum":"8d07f8f7acc296a5abe02cb1bf9a335a82854d44","tarball":"https://registry.npmjs.org/@3kles/3kles-ldap/-/3kles-ldap-2.0.0.tgz","fileCount":34,"integrity":"sha512-DcqqJe6vElFyx2wcFcQ6XYH8zBkKjUUW5itB0eTUvxIx+bM8RN2PeO0GfFcmLKibxTifLVY3Rn7L25kHzX1VJA==","signatures":[{"sig":"MEYCIQDBBAAdEWiJWrnK9YfGDi5wJ+IZu6wYJ6OdC3z07RwLegIhAIF5bciGei9D1D48jpxJ3TxcXhDJcagp2DdsSdOs+tF7","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44066,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v4.10.10\r\nComment: https://openpgpjs.org\r\n\r\nwsFzBAEBCAAGBQJkT+vRACEJED1NWxICdlZqFiEECWMYAoorWMhJKdjhPU1b\r\nEgJ2VmruAg/+MOGDWlaxZUpenfSiG1iGarDKOQtvaOLs5MrT0XkxOUY/ZrWL\r\nClvzokg285Dmsao+8Vk1tUhmm2NwraXN3f9p+TR2b7iFL7tAZacpy+saUAZ3\r\nzbcD7PKTuEksKyzxFYQqah9KPVUos0598HsMjDXLefdYE4Yd8JumTVkDf2WO\r\n5dTRnP7TukdbkDlHnr5xyRAv+vTvKngBRfivxeUGK8giq6K9c6jBmRouY3Jd\r\nphVaSTwhMrgxcObyOfRaHcJWS8idtaB7j6LW7G8IDXUOqleNUhKifRI7N/IJ\r\n6vAxhr70/blS4P8KTIYxWuVgMAYxef3G8mhfWn1SGZmcPMy04svd+Wc8/xjD\r\n/rvnvI8SU0muzfeF89Zlj1CRE0caW6iJ8ZvvDf1B/rR/7irXwPfK2jqTfp43\r\nxEQ5t41zNYpFvU/vfgOuIW9fmgowE1nlD0GbuhWeba9D+ILoprThvCbGLkJC\r\nw1T0fPOHskQPo0A//9hZQojknBOtdjkYVUD2NsjD1bue2S+W120obvIGOtVD\r\nXXuEVGGpZDyS1hfcibsSPdNuQgL8BdJDtXf1eSa9WwWKd6lRlist9T0sdYGW\r\nVgCehDmIVePB9Tjm8xxM0NN+QDuv6Ci8q9b9sT99b8tprnjmWUk7V3pIDzLD\r\nRH2rI2N14GBk4F5A99xf970xaKImf8zYv5s=\r\n=ohBL\r\n-----END PGP SIGNATURE-----\r\n"},"main":"dist/index.js","gitHead":"fb3441b77f6a86835a49156c88b969b040d89c62","scripts":{"dev":"ts-node src/app.ts","prod":"gulp build-prod","build":"gulp transpile"},"typings":"dist/index.d.ts","_npmUser":{"name":"qcampos","email":"q.campos@3kles-consulting.com"},"repository":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap.git","type":"git"},"_npmVersion":"8.11.0","description":"3KLES LDAP","directories":{},"_nodeVersion":"16.15.1","dependencies":{"dotenv":"^16.0.3","ldapts":"^4.0.0","express":"4.18.2","@3kles/3kles-corebe":"^2.1.2"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^6.1.3","ts-node":"^10.9.1","babelify":"^10.0.0","gulp-cli":"^2.3.0","gulp-tap":"^2.0.0","gulp-exec":"^5.0.0","gulp-util":"^3.0.8","browserify":"^17.0.0","gulp-clean":"^0.4.0","gulp-mocha":"^8.0.0","typescript":"^4.9.5","@babel/core":"^7.15.0","@types/gulp":"^4.0.9","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-terser":"^2.1.0","event-stream":"^4.0.1","gulp-foreach":"^0.1.0","run-sequence":"^2.2.1","vinyl-buffer":"^1.0.1","gulp-sourcemaps":"^3.0.0","gulp-typescript":"^6.0.0-alpha.1","babel-preset-env":"^1.7.0","gulp-use-tsconfig":"1.5.3","@types/gulp-uglify":"^3.0.7","vinyl-source-stream":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/3kles-ldap_2.0.0_1682959312931_0.21263416212460795","host":"s3://npm-registry-packages"}},"2.0.1":{"name":"@3kles/3kles-ldap","version":"2.0.1","keywords":["3KLES","Express","Core","Router","Service","Http","LDAP","Active directory"],"author":{"name":"Jeremy Chaut"},"license":"ISC","_id":"@3kles/3kles-ldap@2.0.1","maintainers":[{"name":"freazgo","email":"r.nguyen@3kles-consulting.com"},{"name":"jchaut","email":"j.chaut@3kles-consulting.com"},{"name":"cdasilvacosta","email":"c.dasilvacosta@3kles-consulting.com"},{"name":"qcampos","email":"q.campos@3kles-consulting.com"}],"homepage":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap","bugs":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap/issues"},"dist":{"shasum":"e688eaa105625eef83124b9f50d96f211f185661","tarball":"https://registry.npmjs.org/@3kles/3kles-ldap/-/3kles-ldap-2.0.1.tgz","fileCount":34,"integrity":"sha512-WDvsrdw8AIkVHEb/lPnGnWTYWCJ1Sn/U4SmbufFiVbZ85sCEJDdJ6acVVWsq7WYN5RgFXODX0r9VRQ5VzVkKrA==","signatures":[{"sig":"MEUCIBmSkGi5cS5SIh6HlockVFG0mMhlKJUTObStdsDqjcm3AiEA2YIQOFsYfr4t8oz0+I5yrTT7UflELVobO/IPrR9rjuc=","keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA"}],"unpackedSize":44352},"main":"dist/index.js","gitHead":"b7716b9dd2e7b7a0b87d4a3066cc1f9ea5d4ef43","scripts":{"dev":"ts-node src/app.ts","prod":"gulp build-prod","build":"gulp transpile"},"typings":"dist/index.d.ts","_npmUser":{"name":"qcampos","email":"q.campos@3kles-consulting.com"},"repository":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap.git","type":"git"},"_npmVersion":"8.11.0","description":"3KLES LDAP","directories":{},"_nodeVersion":"16.15.1","dependencies":{"dotenv":"^16.0.3","ldapts":"^4.0.0","express":"4.18.2","@3kles/3kles-corebe":"^2.5.4"},"_hasShrinkwrap":false,"devDependencies":{"gulp":"^4.0.2","tslint":"^6.1.3","ts-node":"^10.9.1","babelify":"^10.0.0","gulp-cli":"^2.3.0","gulp-tap":"^2.0.0","gulp-exec":"^5.0.0","gulp-util":"^3.0.8","browserify":"^17.0.0","gulp-clean":"^0.4.0","gulp-mocha":"^8.0.0","typescript":"^4.9.5","@babel/core":"^7.15.0","@types/gulp":"^4.0.9","gulp-concat":"^2.6.1","gulp-rename":"^2.0.0","gulp-terser":"^2.1.0","event-stream":"^4.0.1","gulp-foreach":"^0.1.0","run-sequence":"^2.2.1","vinyl-buffer":"^1.0.1","gulp-sourcemaps":"^3.0.0","gulp-typescript":"^6.0.0-alpha.1","babel-preset-env":"^1.7.0","gulp-use-tsconfig":"1.5.3","@types/gulp-uglify":"^3.0.7","vinyl-source-stream":"^2.0.0"},"_npmOperationalInternal":{"tmp":"tmp/3kles-ldap_2.0.1_1687944261861_0.7987762603081472","host":"s3://npm-registry-packages"}}},"time":{"created":"2023-05-01T16:41:52.876Z","modified":"2025-06-27T09:39:48.953Z","2.0.0":"2023-05-01T16:41:53.090Z","2.0.1":"2023-06-28T09:24:22.071Z"},"bugs":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap/issues"},"author":{"name":"Jeremy Chaut"},"license":"ISC","homepage":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap","keywords":["3KLES","Express","Core","Router","Service","Http","LDAP","Active directory"],"repository":{"url":"http://gitlab.3kles.local/3kles/lib/corejs/3kles-ldap.git","type":"git"},"description":"3KLES LDAP","maintainers":[{"email":"j.chaut@3kles-consulting.com","name":"jchaut"},{"email":"c.dasilvacosta@3kles-consulting.com","name":"cdasilvacosta"},{"email":"r.nguyen@3kles-consulting.com","name":"freazgo"},{"email":"3kles-lab@3kles-consulting.com","name":"3kles-lab"}],"readme":"# 3KLES-LDAP\n\nThis package contains API and controller to manage LDAP and ActiveDirectory\n\n## API\n\n**LDAPApi** implements IGenericAPI ([3kles-corebe](http://gitlab.3kles.local:2080/corejsteam/3kles-corebe)):\n-  **buildRequest**: Method to build ldap request from paramater and data body\n-  **executeRequest**: Methode to execute ldapts client method\n\n## Controller\n\n**LDAPController** is a class based on GenericController ([3kles-corebe](http://gitlab.3kles.local:2080/corejsteam/3kles-corebe))\n-  **addGenericParameters**: Add parameter to controller\n-  **addList**:Specific method to add parameter for ldap search\n-  **addAdd**:Specific method to add parameter for ldap add\n-  **addDelete**:Specific method to add parameter for ldap delete\n-  **addModify**:Specific method to add parameter for ldap modify\n\n**ADController** is a class inherit LDAPController to manage ActiveDirectory\n-  **parseResponse**: Implement method from parent to parseResponse (specific ActiveDirectory)\n\n## How to use\n\nUse .env file to fill ldap parameter (See example in root folder)\nThe app.js is currently configurate only for ActiveDirectory to add, delete and list the entities User, Group and Computer\n\nThe routes for each entity is composed like follows:\n- list{entity name}:GET (example: listUser)\n- add{entity name}:POST(example: addUser)\n- del{entity name}:PUT(example: delUser)\n\n**To add an entity:**\n```json\n{\n\t\"dn\": \"CN=TESTLDAP,CN=Users,OU=INTERNAL,O=3KC,DC=3KLES,DC=local\",\n\t\"entry\":{\n            \"objectClass\": [\n                \"top\",\n                \"person\",\n                \"organizationalPerson\",\n                \"user\"\n            ],\n            \"givenName\": \"FirstName\",\n            \"sn\": \"Name\",\n            \"mail\":\"f.name@3kles-consulting.com\",\n            \"sAMAccountName\": \"TESTLDAP\",\n            \"userPrincipalName\":\"TESTLDAP@3KLES.local\",\n            \"userAccountControl\":\"544\", //Activate user\n            \"userPassword\":\"3Kles2018!\"\n        }\n}\n```\n\n**To del an entity:**\n```json\n{\n\t\"dn\": \"CN=TESTLDAP,CN=Users,OU=INTERNAL,O=3KC,DC=3KLES,DC=local\"\n}\n```\n\n**To update an entity:**\nif ldap attribute exist you can use only replace even if attribute is empty\n**One change:**\n```json\n{\n\t\"dn\": \"CN=TESTLDAP,CN=Users,OU=INTERNAL,O=3KC,DC=3KLES,DC=local\",\n\t\"change\":{\n\t\t\"operation\":\"replace\",\n\t\t\"modification\":{\n\t\t\t\"type\":\"co\",\n\t\t\t\"values\":[\"France\"]\n\t\t}\n\t}\n}\n```\n\n**Mutli change change:**\n```json\n{\n\t\"dn\": \"CN=TESTLDAP,CN=Users,OU=INTERNAL,O=3KC,DC=3KLES,DC=local\",\n\t\"change\":[\n        {\n\t\t\"operation\":\"replace\",\n\t\t\"modification\":{\n\t\t\t\"type\":\"co\",\n\t\t\t\"values\":[\"France\"]\n        }\n        },\n        {\n\t\t\"operation\":\"replace\",\n\t\t\"modification\":{\n\t\t\t\"type\":\"co\",\n\t\t\t\"values\":[\"France\"]\n        }\n        }\n    ]\n}\n```\n\n**Error response:**\n```json\n{\n    \"code\": 32,\n    \"message\":\"0000208D: NameErr: DSID-03100238, problem 2001 (NO_OBJECT), data 0, best match of:'CN=Users,OU=INTERNAL,O=3KC,DC=3KLES,DC=local'\"\n}\n```\n\n\n\n","readmeFilename":"readme.md"}