Added Twig templating engine for handling views; Removed some unneeded CoffeeScript files
This commit is contained in:
		
							
								
								
									
										19
									
								
								archon.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										19
									
								
								archon.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,19 @@ | |||||||
|  | const express = require('express'); | ||||||
|  | const app = express(); | ||||||
|  | const port = 3000; | ||||||
|  |  | ||||||
|  | // Initialize the Twig template engine - this might get swapped for Twing later. | ||||||
|  | app.set('view engine', 'twig'); | ||||||
|  |  | ||||||
|  | // Service static files from public/ | ||||||
|  | app.use(express.static('public')); | ||||||
|  |  | ||||||
|  | // Load in route handlers | ||||||
|  | indexRoutes = require('./routes/index'); | ||||||
|  |  | ||||||
|  | // Assign routes to handlers | ||||||
|  | app.get('/', indexRoutes.home); | ||||||
|  |  | ||||||
|  | app.listen(port, () => { | ||||||
|  |   console.log(`Example app listening on port ${port}`) | ||||||
|  | }); | ||||||
| @@ -1,2 +1,2 @@ | |||||||
| @loadPage = (pagePath) -> | window.onload = () -> | ||||||
|   window.location.href = pagePath + '.html' |   console.log('Test.') | ||||||
|   | |||||||
| @@ -1,44 +0,0 @@ | |||||||
| ldap = require('ldapjs') |  | ||||||
|  |  | ||||||
| userTable = {} |  | ||||||
|  |  | ||||||
| window.onload = -> |  | ||||||
|   document.getElementById('ldapHost').textContent = localStorage.getItem('ldap_hostname') |  | ||||||
|   userTable = document.getElementById('ldapUserList') |  | ||||||
|   ldapGetUserList() |  | ||||||
|   return |  | ||||||
|  |  | ||||||
| searchOpts = |  | ||||||
|   filter: '(objectClass=posixAccount)' |  | ||||||
|   scope: 'sub' |  | ||||||
|   attributes: ['uid', 'displayName', 'mail'] |  | ||||||
|  |  | ||||||
| ldapGetUserList = () -> |  | ||||||
|   client = ldap.createClient(url: 'ldap://' + localStorage.getItem('ldap_hostname') + '/') |  | ||||||
|   client.bind(localStorage.getItem('ldap_bind_dn'), localStorage.getItem('ldap_bind_pw'), (err) -> |  | ||||||
|     if err |  | ||||||
|       document.querySelector('h1').textContent = 'error' |  | ||||||
|       return |  | ||||||
|     else |  | ||||||
|       client.search('ou=People,' + localStorage.getItem('ldap_base_dn'), searchOpts, (err, res) -> |  | ||||||
|         if err |  | ||||||
|           console.log(err) |  | ||||||
|           return |  | ||||||
|         else |  | ||||||
|           res.on('searchEntry', (entry) -> |  | ||||||
|             userEntry = document.createElement('tr') |  | ||||||
|  |  | ||||||
|             userUid = document.createElement('td') |  | ||||||
|             userUid.innerText = entry.object.uid |  | ||||||
|             userEntry.appendChild(userUid) |  | ||||||
|             userName = document.createElement('td') |  | ||||||
|             userName.innerText = entry.object.displayName |  | ||||||
|             userEntry.appendChild(userName) |  | ||||||
|             userMail = document.createElement('td') |  | ||||||
|             userMail.innerText = entry.object.mail |  | ||||||
|             userEntry.appendChild(userMail) |  | ||||||
|  |  | ||||||
|             userTable.appendChild(userEntry) |  | ||||||
|           ) |  | ||||||
|       ) |  | ||||||
|   ) |  | ||||||
| @@ -1,30 +0,0 @@ | |||||||
| ldap = require('ldapjs') |  | ||||||
|  |  | ||||||
| loginForm = (event) -> |  | ||||||
|   event.preventDefault() |  | ||||||
|   bindHost = document.forms.loginForm.ldap_host.value |  | ||||||
|   bindDn = document.forms.loginForm.bind_dn.value |  | ||||||
|   bindPw = document.forms.loginForm.bind_pw.value |  | ||||||
|   client = ldap.createClient(url: 'ldap://' + bindHost + '/') |  | ||||||
|   client.bind bindDn, bindPw, (err) -> |  | ||||||
|     if err |  | ||||||
|       document.querySelector('h1').textContent = 'error' |  | ||||||
|     else |  | ||||||
|       document.querySelector('h1').textContent = 'Logged in!' |  | ||||||
|       bindDn = document.forms.loginForm.bind_dn.value |  | ||||||
|       baseDnBits = bindDn.split(',') |  | ||||||
|       baseDnBits.shift() |  | ||||||
|       baseDn = baseDnBits.join(',') |  | ||||||
|  |  | ||||||
|       localStorage.setItem('ldap_hostname', document.forms.loginForm.ldap_host.value) |  | ||||||
|       localStorage.setItem('ldap_bind_dn', bindDn) |  | ||||||
|       localStorage.setItem('ldap_bind_pw', document.forms.loginForm.bind_pw.value) |  | ||||||
|       localStorage.setItem('ldap_base_dn', baseDn) |  | ||||||
|  |  | ||||||
|       loadPage('index') |  | ||||||
|     return |  | ||||||
|   return |  | ||||||
|  |  | ||||||
| window.onload = -> |  | ||||||
|   document.getElementById('loginForm').addEventListener('submit', loginForm) |  | ||||||
|   return |  | ||||||
| @@ -1,9 +0,0 @@ | |||||||
| userCreateFormSubmit = (e) -> |  | ||||||
|   e.preventDefault() |  | ||||||
|  |  | ||||||
|   user_uid = document.forms.createUserForm.user_username.value |  | ||||||
|   console.log(user_uid) |  | ||||||
|  |  | ||||||
| window.onload = -> |  | ||||||
|   document.getElementById('createUserForm').addEventListener('submit', userCreateFormSubmit) |  | ||||||
|   return |  | ||||||
							
								
								
									
										11
									
								
								index.js
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								index.js
									
									
									
									
									
								
							| @@ -1,11 +0,0 @@ | |||||||
| const express = require('express'); |  | ||||||
| const app = express(); |  | ||||||
| const port = 3000; |  | ||||||
|  |  | ||||||
| indexRoutes = require('./routes/index'); |  | ||||||
|  |  | ||||||
| app.get('/', indexRoutes.home); |  | ||||||
|  |  | ||||||
| app.listen(port, () => { |  | ||||||
|   console.log(`Example app listening on port ${port}`) |  | ||||||
| }); |  | ||||||
							
								
								
									
										115
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										115
									
								
								package-lock.json
									
									
									
										generated
									
									
									
								
							| @@ -10,7 +10,8 @@ | |||||||
|       "license": "BSD-2-Clause", |       "license": "BSD-2-Clause", | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "express": "^4.18.1", |         "express": "^4.18.1", | ||||||
|         "grunt-dart-sass": "^2.0.1" |         "grunt-dart-sass": "^2.0.1", | ||||||
|  |         "twig": "^1.15.4" | ||||||
|       }, |       }, | ||||||
|       "devDependencies": { |       "devDependencies": { | ||||||
|         "grunt": "^1.5.3", |         "grunt": "^1.5.3", | ||||||
| @@ -18,6 +19,17 @@ | |||||||
|         "grunt-contrib-watch": "^1.1.0" |         "grunt-contrib-watch": "^1.1.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/@babel/runtime": { | ||||||
|  |       "version": "7.18.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", | ||||||
|  |       "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "regenerator-runtime": "^0.13.4" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=6.9.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/abbrev": { |     "node_modules/abbrev": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | ||||||
| @@ -104,8 +116,7 @@ | |||||||
|     "node_modules/balanced-match": { |     "node_modules/balanced-match": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/binary-extensions": { |     "node_modules/binary-extensions": { | ||||||
|       "version": "2.2.0", |       "version": "2.2.0", | ||||||
| @@ -174,7 +185,6 @@ | |||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "balanced-match": "^1.0.0", |         "balanced-match": "^1.0.0", | ||||||
|         "concat-map": "0.0.1" |         "concat-map": "0.0.1" | ||||||
| @@ -289,8 +299,7 @@ | |||||||
|     "node_modules/concat-map": { |     "node_modules/concat-map": { | ||||||
|       "version": "0.0.1", |       "version": "0.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "node_modules/content-disposition": { |     "node_modules/content-disposition": { | ||||||
|       "version": "0.5.4", |       "version": "0.5.4", | ||||||
| @@ -617,6 +626,11 @@ | |||||||
|         "node": ">=0.10.0" |         "node": ">=0.10.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/foreachasync": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", | ||||||
|  |       "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" | ||||||
|  |     }, | ||||||
|     "node_modules/forwarded": { |     "node_modules/forwarded": { | ||||||
|       "version": "0.2.0", |       "version": "0.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | ||||||
| @@ -1339,6 +1353,14 @@ | |||||||
|       "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", |       "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/locutus": { | ||||||
|  |       "version": "2.0.16", | ||||||
|  |       "resolved": "https://registry.npmjs.org/locutus/-/locutus-2.0.16.tgz", | ||||||
|  |       "integrity": "sha512-pGfl6Hb/1mXLzrX5kl5lH7gz25ey0vwQssZp8Qo2CEF59di6KrAgdFm+0pW8ghLnvNzzJGj5tlWhhv2QbK3jeQ==", | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">= 10" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/lodash": { |     "node_modules/lodash": { | ||||||
|       "version": "4.17.21", |       "version": "4.17.21", | ||||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", |       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||||||
| @@ -1479,7 +1501,6 @@ | |||||||
|       "version": "3.0.8", |       "version": "3.0.8", | ||||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", | ||||||
|       "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", |       "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", | ||||||
|       "dev": true, |  | ||||||
|       "dependencies": { |       "dependencies": { | ||||||
|         "brace-expansion": "^1.1.7" |         "brace-expansion": "^1.1.7" | ||||||
|       }, |       }, | ||||||
| @@ -1810,6 +1831,11 @@ | |||||||
|         "node": ">= 0.10" |         "node": ">= 0.10" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/regenerator-runtime": { | ||||||
|  |       "version": "0.13.9", | ||||||
|  |       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", | ||||||
|  |       "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" | ||||||
|  |     }, | ||||||
|     "node_modules/resolve": { |     "node_modules/resolve": { | ||||||
|       "version": "1.22.0", |       "version": "1.22.0", | ||||||
|       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", |       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", | ||||||
| @@ -2068,6 +2094,23 @@ | |||||||
|         "node": ">=0.6" |         "node": ">=0.6" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/twig": { | ||||||
|  |       "version": "1.15.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/twig/-/twig-1.15.4.tgz", | ||||||
|  |       "integrity": "sha512-gRpGrpdf+MswqF6eSjEdYZTa/jt3ZWHK/NU59IbTYJMBQXJ1W+7IxaGEwLkQjd+mNT15j9sQTzQumxUBkuQueQ==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "@babel/runtime": "^7.8.4", | ||||||
|  |         "locutus": "^2.0.11", | ||||||
|  |         "minimatch": "3.0.x", | ||||||
|  |         "walk": "2.3.x" | ||||||
|  |       }, | ||||||
|  |       "bin": { | ||||||
|  |         "twigjs": "bin/twigjs" | ||||||
|  |       }, | ||||||
|  |       "engines": { | ||||||
|  |         "node": ">=8.16" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/type-is": { |     "node_modules/type-is": { | ||||||
|       "version": "1.6.18", |       "version": "1.6.18", | ||||||
|       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||||||
| @@ -2172,6 +2215,14 @@ | |||||||
|         "node": ">= 0.8" |         "node": ">= 0.8" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "node_modules/walk": { | ||||||
|  |       "version": "2.3.15", | ||||||
|  |       "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", | ||||||
|  |       "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", | ||||||
|  |       "dependencies": { | ||||||
|  |         "foreachasync": "^3.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "node_modules/websocket-driver": { |     "node_modules/websocket-driver": { | ||||||
|       "version": "0.7.4", |       "version": "0.7.4", | ||||||
|       "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", |       "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", | ||||||
| @@ -2215,6 +2266,14 @@ | |||||||
|     } |     } | ||||||
|   }, |   }, | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|  |     "@babel/runtime": { | ||||||
|  |       "version": "7.18.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.18.0.tgz", | ||||||
|  |       "integrity": "sha512-YMQvx/6nKEaucl0MY56mwIG483xk8SDNdlUwb2Ts6FUpr7fm85DxEmsY18LXBNhcTz6tO6JwZV8w1W06v8UKeg==", | ||||||
|  |       "requires": { | ||||||
|  |         "regenerator-runtime": "^0.13.4" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "abbrev": { |     "abbrev": { | ||||||
|       "version": "1.1.1", |       "version": "1.1.1", | ||||||
|       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", |       "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", | ||||||
| @@ -2286,8 +2345,7 @@ | |||||||
|     "balanced-match": { |     "balanced-match": { | ||||||
|       "version": "1.0.2", |       "version": "1.0.2", | ||||||
|       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", |       "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", | ||||||
|       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", |       "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "binary-extensions": { |     "binary-extensions": { | ||||||
|       "version": "2.2.0", |       "version": "2.2.0", | ||||||
| @@ -2348,7 +2406,6 @@ | |||||||
|       "version": "1.1.11", |       "version": "1.1.11", | ||||||
|       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", |       "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", | ||||||
|       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", |       "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "balanced-match": "^1.0.0", |         "balanced-match": "^1.0.0", | ||||||
|         "concat-map": "0.0.1" |         "concat-map": "0.0.1" | ||||||
| @@ -2430,8 +2487,7 @@ | |||||||
|     "concat-map": { |     "concat-map": { | ||||||
|       "version": "0.0.1", |       "version": "0.0.1", | ||||||
|       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", |       "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", | ||||||
|       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", |       "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" | ||||||
|       "dev": true |  | ||||||
|     }, |     }, | ||||||
|     "content-disposition": { |     "content-disposition": { | ||||||
|       "version": "0.5.4", |       "version": "0.5.4", | ||||||
| @@ -2686,6 +2742,11 @@ | |||||||
|         "for-in": "^1.0.1" |         "for-in": "^1.0.1" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "foreachasync": { | ||||||
|  |       "version": "3.0.0", | ||||||
|  |       "resolved": "https://registry.npmjs.org/foreachasync/-/foreachasync-3.0.0.tgz", | ||||||
|  |       "integrity": "sha1-VQKYfchxS+M5IJfzLgBxyd7gfPY=" | ||||||
|  |     }, | ||||||
|     "forwarded": { |     "forwarded": { | ||||||
|       "version": "0.2.0", |       "version": "0.2.0", | ||||||
|       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", |       "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", | ||||||
| @@ -3238,6 +3299,11 @@ | |||||||
|       "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", |       "integrity": "sha512-XPQH8Z2GDP/Hwz2PCDrh2mth4yFejwA1OZ/81Ti3LgKyhDcEjsSsqFWZojHG0va/duGd+WyosY7eXLDoOyqcPw==", | ||||||
|       "dev": true |       "dev": true | ||||||
|     }, |     }, | ||||||
|  |     "locutus": { | ||||||
|  |       "version": "2.0.16", | ||||||
|  |       "resolved": "https://registry.npmjs.org/locutus/-/locutus-2.0.16.tgz", | ||||||
|  |       "integrity": "sha512-pGfl6Hb/1mXLzrX5kl5lH7gz25ey0vwQssZp8Qo2CEF59di6KrAgdFm+0pW8ghLnvNzzJGj5tlWhhv2QbK3jeQ==" | ||||||
|  |     }, | ||||||
|     "lodash": { |     "lodash": { | ||||||
|       "version": "4.17.21", |       "version": "4.17.21", | ||||||
|       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", |       "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", | ||||||
| @@ -3351,7 +3417,6 @@ | |||||||
|       "version": "3.0.8", |       "version": "3.0.8", | ||||||
|       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", |       "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", | ||||||
|       "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", |       "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", | ||||||
|       "dev": true, |  | ||||||
|       "requires": { |       "requires": { | ||||||
|         "brace-expansion": "^1.1.7" |         "brace-expansion": "^1.1.7" | ||||||
|       } |       } | ||||||
| @@ -3592,6 +3657,11 @@ | |||||||
|         "resolve": "^1.9.0" |         "resolve": "^1.9.0" | ||||||
|       } |       } | ||||||
|     }, |     }, | ||||||
|  |     "regenerator-runtime": { | ||||||
|  |       "version": "0.13.9", | ||||||
|  |       "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.9.tgz", | ||||||
|  |       "integrity": "sha512-p3VT+cOEgxFsRRA9X4lkI1E+k2/CtnKtU4gcxyaCUreilL/vqI6CdZ3wxVUx3UOUg+gnUOQQcRI7BmSI656MYA==" | ||||||
|  |     }, | ||||||
|     "resolve": { |     "resolve": { | ||||||
|       "version": "1.22.0", |       "version": "1.22.0", | ||||||
|       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", |       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", | ||||||
| @@ -3789,6 +3859,17 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", |       "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", | ||||||
|       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" |       "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" | ||||||
|     }, |     }, | ||||||
|  |     "twig": { | ||||||
|  |       "version": "1.15.4", | ||||||
|  |       "resolved": "https://registry.npmjs.org/twig/-/twig-1.15.4.tgz", | ||||||
|  |       "integrity": "sha512-gRpGrpdf+MswqF6eSjEdYZTa/jt3ZWHK/NU59IbTYJMBQXJ1W+7IxaGEwLkQjd+mNT15j9sQTzQumxUBkuQueQ==", | ||||||
|  |       "requires": { | ||||||
|  |         "@babel/runtime": "^7.8.4", | ||||||
|  |         "locutus": "^2.0.11", | ||||||
|  |         "minimatch": "3.0.x", | ||||||
|  |         "walk": "2.3.x" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "type-is": { |     "type-is": { | ||||||
|       "version": "1.6.18", |       "version": "1.6.18", | ||||||
|       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", |       "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", | ||||||
| @@ -3873,6 +3954,14 @@ | |||||||
|       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", |       "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", | ||||||
|       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" |       "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" | ||||||
|     }, |     }, | ||||||
|  |     "walk": { | ||||||
|  |       "version": "2.3.15", | ||||||
|  |       "resolved": "https://registry.npmjs.org/walk/-/walk-2.3.15.tgz", | ||||||
|  |       "integrity": "sha512-4eRTBZljBfIISK1Vnt69Gvr2w/wc3U6Vtrw7qiN5iqYJPH7LElcYh/iU4XWhdCy2dZqv1ToMyYlybDylfG/5Vg==", | ||||||
|  |       "requires": { | ||||||
|  |         "foreachasync": "^3.0.0" | ||||||
|  |       } | ||||||
|  |     }, | ||||||
|     "websocket-driver": { |     "websocket-driver": { | ||||||
|       "version": "0.7.4", |       "version": "0.7.4", | ||||||
|       "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", |       "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", | ||||||
|   | |||||||
| @@ -2,9 +2,9 @@ | |||||||
|   "name": "archon", |   "name": "archon", | ||||||
|   "version": "0.1.0", |   "version": "0.1.0", | ||||||
|   "description": "A web-based LDAP user and group manager", |   "description": "A web-based LDAP user and group manager", | ||||||
|   "main": "index.js", |   "main": "archon.js", | ||||||
|   "scripts": { |   "scripts": { | ||||||
|     "start": "node index.js", |     "start": "node archon.js", | ||||||
|     "test": "echo \"Error: no test specified\" && exit 1", |     "test": "echo \"Error: no test specified\" && exit 1", | ||||||
|     "grunt": "grunt" |     "grunt": "grunt" | ||||||
|   }, |   }, | ||||||
| @@ -16,7 +16,8 @@ | |||||||
|   "license": "BSD-2-Clause", |   "license": "BSD-2-Clause", | ||||||
|   "dependencies": { |   "dependencies": { | ||||||
|     "express": "^4.18.1", |     "express": "^4.18.1", | ||||||
|     "grunt-dart-sass": "^2.0.1" |     "grunt-dart-sass": "^2.0.1", | ||||||
|  |     "twig": "^1.15.4" | ||||||
|   }, |   }, | ||||||
|   "devDependencies": { |   "devDependencies": { | ||||||
|     "grunt": "^1.5.3", |     "grunt": "^1.5.3", | ||||||
|   | |||||||
| @@ -1,3 +1,3 @@ | |||||||
| exports.home = function(req, res, next) { | exports.home = function(req, res, next) { | ||||||
|   res.send('Hello World!'); |   res.render('index'); | ||||||
| }; | }; | ||||||
|   | |||||||
							
								
								
									
										34
									
								
								views/index.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										34
									
								
								views/index.twig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,34 @@ | |||||||
|  | {% extends 'layout.twig' %} | ||||||
|  |  | ||||||
|  | {% block content %} | ||||||
|  | <header class="row"> | ||||||
|  |   <div class="columns twelve u-text-center"> | ||||||
|  |     <h1>Archon LDAP Manager</h1> | ||||||
|  |   </div> | ||||||
|  | </header> | ||||||
|  |  | ||||||
|  | <section id="connectionInfo" class="row"> | ||||||
|  |   <div class="columns twelve u-text-center"> | ||||||
|  |     <p>Connected to: <span id="ldapHost"></span></p> | ||||||
|  |   </div> | ||||||
|  | </section> | ||||||
|  |  | ||||||
|  | <section id="userActions" class="row"> | ||||||
|  |   <div class="columns twelve"> | ||||||
|  |     <p><a href="user/create.html">Create new user</a></p> | ||||||
|  |   </div> | ||||||
|  | </section> | ||||||
|  |  | ||||||
|  | <section id="ldapObjectTable" class="row"> | ||||||
|  |   <table> | ||||||
|  |     <thead> | ||||||
|  |       <tr> | ||||||
|  |         <th>User ID</th> | ||||||
|  |         <th>Display Name</th> | ||||||
|  |         <th>Email Address</th> | ||||||
|  |       </tr> | ||||||
|  |     </thead> | ||||||
|  |     <tbody id="ldapUserList"></tbody> | ||||||
|  |   </table> | ||||||
|  | </section> | ||||||
|  | {% endblock %} | ||||||
							
								
								
									
										32
									
								
								views/layout.twig
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										32
									
								
								views/layout.twig
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,32 @@ | |||||||
|  | <!DOCTYPE html> | ||||||
|  | <html lang="en"> | ||||||
|  |   <head> | ||||||
|  |     <meta charset="UTF-8"> | ||||||
|  |     <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/skeleton/2.0.4/skeleton.min.css"> | ||||||
|  |     <link rel="stylesheet" href="/styles/archon.css"> | ||||||
|  |     <title>Archon LDAP Manager</title> | ||||||
|  |     <script src="/js/archon.js" charset="utf-8"></script> | ||||||
|  |     {% block scripts %}{% endblock %} | ||||||
|  |   </head> | ||||||
|  |   <body> | ||||||
|  |     <div class="container"> | ||||||
|  |       {% block content %}{% endblock %} | ||||||
|  |     </div> | ||||||
|  |  | ||||||
|  |     <footer id="footer"> | ||||||
|  |       <div class="container fluid"> | ||||||
|  |         <div class="row"> | ||||||
|  |           <div class="columns three"><p></p></div> | ||||||
|  |           <div class="columns six"> | ||||||
|  |             <p class="no-margin">This app was built using:</p> | ||||||
|  |             <p class="no-margin"> | ||||||
|  |               Node.js <span id="node-version"></span>, | ||||||
|  |               Chromium <span id="chrome-version"></span>, | ||||||
|  |               and Electron <span id="electron-version"></span>. | ||||||
|  |             </p> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |     </footer> | ||||||
|  |   </body> | ||||||
|  | </html> | ||||||
		Reference in New Issue
	
	Block a user