Typescript migration
* app.js * main.js * router.js
This commit is contained in:
parent
94d01310b9
commit
9652519267
12 changed files with 256 additions and 157 deletions
server
67
server/app.ts
Normal file
67
server/app.ts
Normal file
|
@ -0,0 +1,67 @@
|
|||
import _ from "lodash"
|
||||
import auth, {BasicAuthCheckerCallback} from "http-auth"
|
||||
import bodyParser from "body-parser"
|
||||
import compress from "compression"
|
||||
import express, {Express, NextFunction, Request, Response} from "express"
|
||||
import fs from "graceful-fs"
|
||||
|
||||
const config = require('./config').config
|
||||
|
||||
const app: Express = express();
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// urls beneath /internal are protected
|
||||
const internalAuth = auth.basic(
|
||||
{
|
||||
realm: 'Knotenformular - Intern'
|
||||
},
|
||||
function (username: string, password: string, callback: BasicAuthCheckerCallback): void {
|
||||
callback(
|
||||
config.server.internal.active &&
|
||||
username === config.server.internal.user &&
|
||||
password === config.server.internal.password
|
||||
);
|
||||
}
|
||||
);
|
||||
router.use('/internal', auth.connect(internalAuth));
|
||||
|
||||
router.use(bodyParser.json());
|
||||
router.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
const adminDir = __dirname + '/../admin';
|
||||
const clientDir = __dirname + '/../client';
|
||||
const templateDir = __dirname + '/templates';
|
||||
|
||||
const jsTemplateFiles = [
|
||||
'/config.js'
|
||||
];
|
||||
|
||||
router.use(compress());
|
||||
|
||||
function serveTemplate (mimeType: string, req: Request, res: Response, next: NextFunction): void {
|
||||
return fs.readFile(templateDir + '/' + req.path + '.template', 'utf8', function (err, body) {
|
||||
if (err) {
|
||||
return next(err);
|
||||
}
|
||||
|
||||
res.writeHead(200, { 'Content-Type': mimeType });
|
||||
res.end(_.template(body)({ config: config.client }));
|
||||
|
||||
return null; // to suppress warning
|
||||
});
|
||||
}
|
||||
|
||||
router.use(function (req: Request, res: Response, next: NextFunction): void {
|
||||
if (jsTemplateFiles.indexOf(req.path) >= 0) {
|
||||
return serveTemplate('application/javascript', req, res, next);
|
||||
}
|
||||
return next();
|
||||
});
|
||||
|
||||
router.use('/internal/admin', express.static(adminDir + '/'));
|
||||
router.use('/', express.static(clientDir + '/'));
|
||||
|
||||
app.use(config.server.rootPath, router);
|
||||
|
||||
export default app;
|
Loading…
Add table
Add a link
Reference in a new issue