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); });