isundil 4 лет назад
Родитель
Сommit
862ca2dd49
6 измененных файлов с 60 добавлено и 9 удалено
  1. 3 3
      app.ts
  2. 8 0
      routes/entity.ts
  3. 40 3
      routes/index.ts
  4. 2 2
      templates/tree.pug
  5. 6 0
      views/entity.pug
  6. 1 1
      views/index.pug

+ 3 - 3
app.ts

@@ -2,7 +2,7 @@ import * as express from 'express';
 import { AddressInfo } from "net";
 import * as path from 'path';
 import * as bodyParser from 'body-parser';
-import route_category from './routes/category';
+import route_index from './routes/index';
 import route_entity from './routes/entity';
 import { route_login, route_logout } from './routes/login';
 import LDAPFactory from './src/ldapInterface';
@@ -35,7 +35,7 @@ app.use((req, res, next) => {
 });
 
 //app.use('/', route_index);
-app.use('/', route_category);
+app.use('/', route_index);
 app.use('/entity', route_entity);
 app.use('/login', route_login);
 app.use('/logout', route_logout);
@@ -74,4 +74,4 @@ app.set('port', process.env.PORT || 3000);
 
 const server = app.listen(app.get('port'), function () {
     debug(`Express server listening on port ${(server.address() as AddressInfo).port}`);
-});
+});

+ 8 - 0
routes/entity.ts

@@ -6,6 +6,14 @@ const router = express.Router();
 import Security from '../src/Security';
 import { ILDAPManager } from '../src/ldapInterface';
 
+router.get('/:dn', (req: express.Request, res: express.Response) => {
+    if (!Security.requireLoggedUser(req, res))
+        return;
+    res.render('entity', {
+        dn: req.params.dn
+    });
+});
+
 router.delete('/', (req: express.Request, res: express.Response) => {
     const session = Security.GetSession(req);
     if (!req.query["csrf"] || !req.query["dn"] || Array.isArray(req.query["csrf"]) || Array.isArray(req.query["dn"])) {

+ 40 - 3
routes/index.ts

@@ -1,11 +1,48 @@
 /*
- * GET home page.
+ * GET users listing.
  */
 import express = require('express');
 const router = express.Router();
+import Security from '../src/Security';
+import { ILDAPManager } from '../src/ldapInterface';
+import LDAPEntry from '../src/LDAPEntry';
+import ConfigManager, { LDAPAttribute, LDAPCategory } from '../src/ConfigLoader';
+
+function GetCurrentCategory(req: express.Request, defaultResult: LDAPCategory): LDAPCategory|null {
+    if (!req.query["category"])
+        return null;
+    let query = Array.isArray(req.query["category"]) ? req.query["category"][0] : req.query["category"];
+    return LinkToCategory(query.toString()) || defaultResult;
+}
+
+function LinkToCategory(query: string): LDAPCategory | null {
+    return ConfigManager.GetInstance().GetCategoryByName(decodeURIComponent(query));
+}
+
+function CategoryToLink(category: LDAPCategory): string {
+    return encodeURIComponent(category.GetName());
+}
+
+function DnToLink(dn: string): string {
+    return encodeURIComponent(dn);
+}
 
 router.get('/', (req: express.Request, res: express.Response) => {
-    res.render('index', { title: 'Express' });
+    if (!Security.requireLoggedUser(req, res))
+        return;
+    req.ldapManager.GetInstance().then((ldap: ILDAPManager): void => {
+        ldap.GetTree().then(root => {
+            res.render("index", {
+                tree: root.GetChildren()[0],
+                DnToLnk: DnToLink
+            });
+        });
+    });
+});
+router.get('/home', (req, res) => {
+    if (!Security.requireLoggedUser(req, res))
+        return;
+    res.send("Hello, world");
 });
 
-export default router;
+export default router;

+ 2 - 2
templates/tree.pug

@@ -1,13 +1,13 @@
 
 mixin tree(item)
-  li(class="treeitem",alt=item.FullName())
+  li(class="treeitem",alt=item.FullName(),data-fullname=item.FullName())
     if item.HasChildren()
       span(data-name=item.GetName())
       ul(class="treebranch")
         for i in item.GetChildren()
           +tree(i)
     else
-      span=item.GetName()
+      a(href="entity/"+DnToLnk(item.FullName()),target="page")=item.GetName()
 
 mixin treeroot(tree)
   ul(class="treeroot")

+ 6 - 0
views/entity.pug

@@ -0,0 +1,6 @@
+extends layout
+
+block content
+  div(class="page")
+    input(type="hidden" id="csrf" value=csrf)
+    h1=dn

+ 1 - 1
views/index.pug

@@ -8,4 +8,4 @@ block content
         script(src='/javascripts/tree.js', language='javascript')
         script.
           makeTree(document.querySelectorAll("#menuBar>div>ul.treeroot")[0]);
-    iframe(id="page",src=rootSrc)
+    iframe(id="page",name="page",src="home")