Files
html5-restaurant/main.js

151 lines
3.5 KiB
JavaScript

var express = require('express');
var jade = require('jade');
var bodyParser = require('body-parser');
var session = require('express-session');
var loginMod = require('./modules/login');
var menuMod = require('./modules/menu');
//var path = require('path');
var fs = require('fs');
var app = express();
// **************************
// APP VARS
// **************************
app.set('view engine', 'jade');
app.set('rundir', '.');
app.set('views', app.get('rundir') + '/views');
// **************************
// MIDDLEWARE
// **************************
app.use(session({
secret: 'Jk0Z850cD2MXkcIRXDg1M4X6c1VKkJTb6VYQfbWUKw2XwqaBmqqaKu7K0Q8WlGZVqupF2fzXaavt1hNf',
resave: true,
saveUninitialized: true}));
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({
extended: true
}));
app.use('/bin', express.static(app.get('rundir') + '/public'));
// **************************
// INIT
// **************************
menuMod.init(app.get('rundir') + '/data/menu.json');
// **************************
// ROUTES
// **************************
app.get('/', function(req, res) {
res.render('index', {
title: 'Restaurant Reiskorn | Home',
loginName: loginMod.getName(req),
menuJSON: menuMod.getJSON()
});
});
app.get('/speisekarte', function(req, res) {
res.render('menu', {
title: 'Restaurant Reiskorn | Speisekarte',
loginName: loginMod.getName(req),
isAdmin: loginMod.hasAccess(req, loginMod.AdminRight.MENU),
menuJSON: menuMod.getJSON()
});
});
app.post('/speisekarte', function(req, res) {
var nametag = req.body.nametag;
var name = req.body.name;
var desc = req.body.desc;
var price = req.body.price;
if (loginMod.hasAccess(req, loginMod.AdminRight.MENU)) {
var action = menuMod.determineAction(nametag);
var error = 0;
if (action == menuMod.MenuAction.CREATE)
error = menuMod.addValue(name, desc, price, nametag);
else if (action == menuMod.MenuAction.UPDATE)
error = menuMod.updateValue(name, desc, price, nametag);
else if (action == menuMod.MenuAction.DELETE)
error = menuMod.deleteValue(nametag);
console.log(error);
}
res.render('menu', {
title: 'Restaurant Reiskorn | Speisekarte',
loginName: loginMod.getName(req),
isAdmin: loginMod.hasAccess(req, loginMod.AdminRight.MENU),
menuJSON: menuMod.getJSON()
});
});
app.get('/kontakt', function(req, res) {
res.render('contact', {
title: 'Restaurant Reiskorn | Kontakt',
loginName: loginMod.getName(req),
menuJSON: menuMod.getJSON()
});
});
app.get('/login', function(req, res) {
res.render('login', {
title: 'Restaurant Reiskorn | Login',
loginName: loginMod.getName(req),
isAdmin: loginMod.hasAccess(req, loginMod.AdminRight.ADMIN),
menuJSON: menuMod.getJSON()
});
});
app.post('/login', function(req, res) {
var name = req.body.username;
var pwd = req.body.password;
var targetLogout = req.body.targetLogout;
var action;
// login
if (name && pwd) {
if (loginMod.doLogin(req, name, pwd)) {
action = "login-success";
} else {
action = "login-fail";
}
}
// logout
if (targetLogout) {
loginMod.doLogout(req);
action = "logout";
}
res.render('login', {
title: 'Restaurant Reiskorn | Login',
loginName: loginMod.getName(req),
isAdmin: loginMod.hasAccess(req, loginMod.AdminRight.ADMIN),
menuJSON: menuMod.getJSON(),
loginAction: action
});
});
var server = app.listen(3000, function() {
var host = server.address().address;
var port = server.address().port;
console.log('Example app listening at http://%s:%s', host, port);
});