Added a basic user search
This commit is contained in:
		| @@ -4,6 +4,10 @@ const session = require('express-session'); | ||||
| const app = express(); | ||||
| const port = 3000; | ||||
|  | ||||
| // Enable POST data handling | ||||
| app.use(express.json()); | ||||
| app.use(express.urlencoded({ extended: true })); | ||||
|  | ||||
| // Start creating our session config | ||||
| var sess = { | ||||
|   secret: 'dark archon', // will need to change this later | ||||
| @@ -33,6 +37,7 @@ authRoutes = require('./routes/auth'); | ||||
| // Assign routes to handlers | ||||
| app.get('/', indexRoutes.home); | ||||
| app.get('/auth/login', authRoutes.getLogin); | ||||
| app.post('/auth/login', authRoutes.postLogin); | ||||
|  | ||||
| app.listen(port, () => { | ||||
|   console.log(`Example app listening on port ${port}`) | ||||
|   | ||||
							
								
								
									
										222
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										222
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -12,6 +12,7 @@ | ||||
|         "express": "^4.18.1", | ||||
|         "express-session": "^1.17.3", | ||||
|         "grunt-dart-sass": "^2.0.1", | ||||
|         "ldapjs": "^2.3.2", | ||||
|         "twig": "^1.15.4" | ||||
|       }, | ||||
|       "devDependencies": { | ||||
| @@ -37,6 +38,11 @@ | ||||
|       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/abstract-logging": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", | ||||
|       "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" | ||||
|     }, | ||||
|     "node_modules/accepts": { | ||||
|       "version": "1.3.8", | ||||
|       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", | ||||
| @@ -105,6 +111,22 @@ | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/asn1": { | ||||
|       "version": "0.2.6", | ||||
|       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", | ||||
|       "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", | ||||
|       "dependencies": { | ||||
|         "safer-buffer": "~2.1.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/assert-plus": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||||
|       "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", | ||||
|       "engines": { | ||||
|         "node": ">=0.8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/async": { | ||||
|       "version": "2.6.4", | ||||
|       "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", | ||||
| @@ -114,6 +136,17 @@ | ||||
|         "lodash": "^4.17.14" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/backoff": { | ||||
|       "version": "2.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", | ||||
|       "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", | ||||
|       "dependencies": { | ||||
|         "precond": "0.2" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">= 0.6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/balanced-match": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||
| @@ -340,6 +373,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||||
|       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | ||||
|     }, | ||||
|     "node_modules/core-util-is": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "node_modules/dateformat": { | ||||
|       "version": "3.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", | ||||
| @@ -539,6 +577,14 @@ | ||||
|       "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "node_modules/extsprintf": { | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", | ||||
|       "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", | ||||
|       "engines": [ | ||||
|         "node >=0.6.0" | ||||
|       ] | ||||
|     }, | ||||
|     "node_modules/faye-websocket": { | ||||
|       "version": "0.10.0", | ||||
|       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", | ||||
| @@ -1340,6 +1386,35 @@ | ||||
|         "node": ">=0.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ldap-filter": { | ||||
|       "version": "0.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", | ||||
|       "integrity": "sha1-KxTGiiqdQQTb28kQocqF/Riel5c=", | ||||
|       "dependencies": { | ||||
|         "assert-plus": "^1.0.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=0.8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/ldapjs": { | ||||
|       "version": "2.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.3.2.tgz", | ||||
|       "integrity": "sha512-FU+GR/qbQ96WUZ2DUb7FzaEybYvv3240wTVPcbsdELB3o4cK92zGVjntsh68siVkLeCmlCcsd/cIQzyGXSS7LA==", | ||||
|       "dependencies": { | ||||
|         "abstract-logging": "^2.0.0", | ||||
|         "asn1": "^0.2.4", | ||||
|         "assert-plus": "^1.0.0", | ||||
|         "backoff": "^2.5.0", | ||||
|         "ldap-filter": "^0.3.3", | ||||
|         "once": "^1.4.0", | ||||
|         "vasync": "^2.2.0", | ||||
|         "verror": "^1.8.1" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=10.13.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/liftup": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", | ||||
| @@ -1661,7 +1736,6 @@ | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||
|       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | ||||
|       "dev": true, | ||||
|       "dependencies": { | ||||
|         "wrappy": "1" | ||||
|       } | ||||
| @@ -1786,6 +1860,14 @@ | ||||
|         "url": "https://github.com/sponsors/jonschlinkert" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/precond": { | ||||
|       "version": "0.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", | ||||
|       "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=", | ||||
|       "engines": { | ||||
|         "node": ">= 0.6" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/process": { | ||||
|       "version": "0.11.10", | ||||
|       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", | ||||
| @@ -2269,6 +2351,43 @@ | ||||
|         "node": ">= 0.8" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vasync": { | ||||
|       "version": "2.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz", | ||||
|       "integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==", | ||||
|       "engines": [ | ||||
|         "node >=0.6.0" | ||||
|       ], | ||||
|       "dependencies": { | ||||
|         "verror": "1.10.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/vasync/node_modules/verror": { | ||||
|       "version": "1.10.0", | ||||
|       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||||
|       "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", | ||||
|       "engines": [ | ||||
|         "node >=0.6.0" | ||||
|       ], | ||||
|       "dependencies": { | ||||
|         "assert-plus": "^1.0.0", | ||||
|         "core-util-is": "1.0.2", | ||||
|         "extsprintf": "^1.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/verror": { | ||||
|       "version": "1.10.1", | ||||
|       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", | ||||
|       "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", | ||||
|       "dependencies": { | ||||
|         "assert-plus": "^1.0.0", | ||||
|         "core-util-is": "1.0.2", | ||||
|         "extsprintf": "^1.2.0" | ||||
|       }, | ||||
|       "engines": { | ||||
|         "node": ">=0.6.0" | ||||
|       } | ||||
|     }, | ||||
|     "node_modules/walk": { | ||||
|       "version": "2.3.15", | ||||
|       "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", | ||||
| @@ -2315,8 +2434,7 @@ | ||||
|     "node_modules/wrappy": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||
|       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | ||||
|     } | ||||
|   }, | ||||
|   "dependencies": { | ||||
| @@ -2334,6 +2452,11 @@ | ||||
|       "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "abstract-logging": { | ||||
|       "version": "2.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/abstract-logging/-/abstract-logging-2.0.1.tgz", | ||||
|       "integrity": "sha512-2BjRTZxTPvheOvGbBslFSYOUkr+SjPtOnrLP33f+VIWLzezQpZcqVg7ja3L4dBXmzzgwT+a029jRx5PCi3JuiA==" | ||||
|     }, | ||||
|     "accepts": { | ||||
|       "version": "1.3.8", | ||||
|       "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", | ||||
| @@ -2387,6 +2510,19 @@ | ||||
|       "integrity": "sha512-B1qMD3RBP7O8o0H2KbrXDyB0IccejMF15+87Lvlor12ONPRHP6gTjXMNkt/d3ZuOGbAe66hFmaCfECI24Ufp6w==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "asn1": { | ||||
|       "version": "0.2.6", | ||||
|       "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", | ||||
|       "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", | ||||
|       "requires": { | ||||
|         "safer-buffer": "~2.1.0" | ||||
|       } | ||||
|     }, | ||||
|     "assert-plus": { | ||||
|       "version": "1.0.0", | ||||
|       "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", | ||||
|       "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==" | ||||
|     }, | ||||
|     "async": { | ||||
|       "version": "2.6.4", | ||||
|       "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", | ||||
| @@ -2396,6 +2532,14 @@ | ||||
|         "lodash": "^4.17.14" | ||||
|       } | ||||
|     }, | ||||
|     "backoff": { | ||||
|       "version": "2.5.0", | ||||
|       "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", | ||||
|       "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", | ||||
|       "requires": { | ||||
|         "precond": "0.2" | ||||
|       } | ||||
|     }, | ||||
|     "balanced-match": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||
| @@ -2572,6 +2716,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", | ||||
|       "integrity": "sha1-4wOogrNCzD7oylE6eZmXNNqzriw=" | ||||
|     }, | ||||
|     "core-util-is": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", | ||||
|       "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" | ||||
|     }, | ||||
|     "dateformat": { | ||||
|       "version": "3.0.3", | ||||
|       "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", | ||||
| @@ -2729,6 +2878,11 @@ | ||||
|       "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "extsprintf": { | ||||
|       "version": "1.4.1", | ||||
|       "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", | ||||
|       "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==" | ||||
|     }, | ||||
|     "faye-websocket": { | ||||
|       "version": "0.10.0", | ||||
|       "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.10.0.tgz", | ||||
| @@ -3339,6 +3493,29 @@ | ||||
|       "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", | ||||
|       "dev": true | ||||
|     }, | ||||
|     "ldap-filter": { | ||||
|       "version": "0.3.3", | ||||
|       "resolved": "https://registry.npmjs.org/ldap-filter/-/ldap-filter-0.3.3.tgz", | ||||
|       "integrity": "sha1-KxTGiiqdQQTb28kQocqF/Riel5c=", | ||||
|       "requires": { | ||||
|         "assert-plus": "^1.0.0" | ||||
|       } | ||||
|     }, | ||||
|     "ldapjs": { | ||||
|       "version": "2.3.2", | ||||
|       "resolved": "https://registry.npmjs.org/ldapjs/-/ldapjs-2.3.2.tgz", | ||||
|       "integrity": "sha512-FU+GR/qbQ96WUZ2DUb7FzaEybYvv3240wTVPcbsdELB3o4cK92zGVjntsh68siVkLeCmlCcsd/cIQzyGXSS7LA==", | ||||
|       "requires": { | ||||
|         "abstract-logging": "^2.0.0", | ||||
|         "asn1": "^0.2.4", | ||||
|         "assert-plus": "^1.0.0", | ||||
|         "backoff": "^2.5.0", | ||||
|         "ldap-filter": "^0.3.3", | ||||
|         "once": "^1.4.0", | ||||
|         "vasync": "^2.2.0", | ||||
|         "verror": "^1.8.1" | ||||
|       } | ||||
|     }, | ||||
|     "liftup": { | ||||
|       "version": "3.0.1", | ||||
|       "resolved": "https://registry.npmjs.org/liftup/-/liftup-3.0.1.tgz", | ||||
| @@ -3587,7 +3764,6 @@ | ||||
|       "version": "1.4.0", | ||||
|       "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", | ||||
|       "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", | ||||
|       "dev": true, | ||||
|       "requires": { | ||||
|         "wrappy": "1" | ||||
|       } | ||||
| @@ -3682,6 +3858,11 @@ | ||||
|       "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", | ||||
|       "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" | ||||
|     }, | ||||
|     "precond": { | ||||
|       "version": "0.2.3", | ||||
|       "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", | ||||
|       "integrity": "sha1-qpWRvKokkj8eD0hJ0kD0fvwQdaw=" | ||||
|     }, | ||||
|     "process": { | ||||
|       "version": "0.11.10", | ||||
|       "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", | ||||
| @@ -4048,6 +4229,36 @@ | ||||
|       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||||
|       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | ||||
|     }, | ||||
|     "vasync": { | ||||
|       "version": "2.2.1", | ||||
|       "resolved": "https://registry.npmjs.org/vasync/-/vasync-2.2.1.tgz", | ||||
|       "integrity": "sha512-Hq72JaTpcTFdWiNA4Y22Amej2GH3BFmBaKPPlDZ4/oC8HNn2ISHLkFrJU4Ds8R3jcUi7oo5Y9jcMHKjES+N9wQ==", | ||||
|       "requires": { | ||||
|         "verror": "1.10.0" | ||||
|       }, | ||||
|       "dependencies": { | ||||
|         "verror": { | ||||
|           "version": "1.10.0", | ||||
|           "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", | ||||
|           "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", | ||||
|           "requires": { | ||||
|             "assert-plus": "^1.0.0", | ||||
|             "core-util-is": "1.0.2", | ||||
|             "extsprintf": "^1.2.0" | ||||
|           } | ||||
|         } | ||||
|       } | ||||
|     }, | ||||
|     "verror": { | ||||
|       "version": "1.10.1", | ||||
|       "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", | ||||
|       "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", | ||||
|       "requires": { | ||||
|         "assert-plus": "^1.0.0", | ||||
|         "core-util-is": "1.0.2", | ||||
|         "extsprintf": "^1.2.0" | ||||
|       } | ||||
|     }, | ||||
|     "walk": { | ||||
|       "version": "2.3.15", | ||||
|       "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", | ||||
| @@ -4085,8 +4296,7 @@ | ||||
|     "wrappy": { | ||||
|       "version": "1.0.2", | ||||
|       "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", | ||||
|       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", | ||||
|       "dev": true | ||||
|       "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -18,6 +18,7 @@ | ||||
|     "express": "^4.18.1", | ||||
|     "express-session": "^1.17.3", | ||||
|     "grunt-dart-sass": "^2.0.1", | ||||
|     "ldapjs": "^2.3.2", | ||||
|     "twig": "^1.15.4" | ||||
|   }, | ||||
|   "devDependencies": { | ||||
|   | ||||
| @@ -1,3 +1,32 @@ | ||||
| const ldap = require('ldapjs'); | ||||
|  | ||||
| exports.getLogin = (req, res, next) => { | ||||
|   res.render('auth/login'); | ||||
| }; | ||||
|  | ||||
| exports.postLogin = (req, res, next) => { | ||||
|  | ||||
|   bindHost = req.body.ldap_bind_host; | ||||
|   bindDn = req.body.ldap_bind_dn; | ||||
|   bindPw = req.body.ldap_bind_pw; | ||||
|  | ||||
|   client = ldap.createClient({url: 'ldap://' + bindHost + '/'}); | ||||
|   client.bind(bindDn, bindPw, (err) => { | ||||
|     if (err) { | ||||
|       console.log('There was an error while logging in. Please try again.'); | ||||
|       res.redirect('/auth/login'); | ||||
|       return next(err); | ||||
|     } else { | ||||
|       console.log('Success!'); | ||||
|       req.session.ldap_bind_host = bindHost; | ||||
|       req.session.ldap_bind_dn = bindDn; | ||||
|       req.session.ldap_bind_pw = bindPw; | ||||
|       baseDnBits = bindDn.split(','); | ||||
|       baseDnBits.shift(); | ||||
|       baseDn = baseDnBits.join(','); | ||||
|       req.session.ldap_base_dn = baseDn; | ||||
|       return res.redirect('/'); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
| }; | ||||
|   | ||||
| @@ -1,3 +1,31 @@ | ||||
| exports.home = function(req, res, next) { | ||||
|   res.render('index'); | ||||
| const ldap = require('ldapjs'); | ||||
|  | ||||
| searchOpts = { | ||||
|   filter: '(objectClass=posixAccount)', | ||||
|   scope: 'sub', | ||||
|   attributes: ['uid', 'displayName', 'mail'], | ||||
| }; | ||||
|  | ||||
| exports.home = function(req, res, next) { | ||||
|  | ||||
|   client = ldap.createClient({url: 'ldap://' + req.session.ldap_bind_host + '/'}); | ||||
|   client.bind(req.session.ldap_bind_dn, req.session.ldap_bind_pw, (err) => { | ||||
|     if (err) { | ||||
|       console.log('There was an error while logging in. Please try again.'); | ||||
|       res.redirect('/auth/login'); | ||||
|       return next(err); | ||||
|     } else { | ||||
|       client.search('ou=People,' + req.session.ldap_base_dn, searchOpts, (err, result) => { | ||||
|         users = []; | ||||
|         result.on('searchEntry', (entry) => { | ||||
|           users.push(entry.object); | ||||
|         }); | ||||
|  | ||||
|         return res.render('index', { | ||||
|           users: users | ||||
|         }); | ||||
|       }); | ||||
|     } | ||||
|   }); | ||||
|  | ||||
| }; | ||||
|   | ||||
| @@ -8,23 +8,23 @@ | ||||
| </header> | ||||
|  | ||||
| <div class="row"> | ||||
|   <form id="loginForm" class="columns twelve"> | ||||
|   <form id="loginForm" class="columns twelve" action="/auth/login" method="POST"> | ||||
|     <div class="row"> | ||||
|       <label class="columns twelve"> | ||||
|         LDAP Host: | ||||
|         <input class="u-full-width" type="text" name="ldap_host" placeholder="Enter LDAP host..."> | ||||
|         <input class="u-full-width" type="text" name="ldap_bind_host" placeholder="Enter LDAP host..."> | ||||
|       </label> | ||||
|     </div> | ||||
|  | ||||
|     <div class="row"> | ||||
|       <label class="columns six"> | ||||
|         Bind DN: | ||||
|         <input class="u-full-width" type="text" name="bind_dn" placeholder="Enter bind DN..."> | ||||
|         <input class="u-full-width" type="text" name="ldap_bind_dn" placeholder="Enter bind DN..."> | ||||
|       </label> | ||||
|  | ||||
|       <label class="columns six"> | ||||
|         Bind Password: | ||||
|         <input class="u-full-width" type="password" name="bind_pw" placeholder="Enter bind password..."> | ||||
|         <input class="u-full-width" type="password" name="ldap_bind_pw" placeholder="Enter bind password..."> | ||||
|       </label> | ||||
|     </div> | ||||
|  | ||||
|   | ||||
| @@ -28,7 +28,15 @@ | ||||
|         <th>Email Address</th> | ||||
|       </tr> | ||||
|     </thead> | ||||
|     <tbody id="ldapUserList"></tbody> | ||||
|     <tbody id="ldapUserList"> | ||||
|       {% for user in users %} | ||||
|         <tr> | ||||
|           <td>{{ user.uid }}</td> | ||||
|           <td>{{ user.displayName }}</td> | ||||
|           <td>{{ user.mail }}</td> | ||||
|         </tr> | ||||
|       {% endfor %} | ||||
|     </tbody> | ||||
|   </table> | ||||
| </section> | ||||
| {% endblock %} | ||||
|   | ||||
		Reference in New Issue
	
	Block a user