From c4dc15ccddf5a0c5c16a4a9453945128a77d30a7 Mon Sep 17 00:00:00 2001 From: Robert Richter Date: Tue, 3 Mar 2020 23:01:01 +0100 Subject: [PATCH] =?UTF-8?q?update=20Di=203.=20M=C3=A4r=2023:01:01=20CET=20?= =?UTF-8?q?2020?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/routing.js | 260 ++++++++++++++++++++++++++-------------------- 1 file changed, 150 insertions(+), 110 deletions(-) diff --git a/server/routing.js b/server/routing.js index ddeef21..10337ef 100644 --- a/server/routing.js +++ b/server/routing.js @@ -1,5 +1,9 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) { + /* ########################### */ + /* ##### Statische Seiten #### */ + /* ########################### */ + // Startseite app.get('/', function(req, res) { sql.db_list_wachen(function(data) { @@ -21,6 +25,103 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) }); }); + // Ueber die Anwendung + app.get('/about', function(req, res) { + res.render('about', { + public: app_cfg.public, + title: 'Über', + user: req.user + }); + }); + + // Impressum + app.get('/impressum', function(req, res) { + res.render('imprint', { + public: app_cfg.public, + title: 'Impressum', + user: req.user + }); + }); + + // Datenschutzerklaerung + app.get('/datenschutz', function(req, res) { + res.render('privacy', { + public: app_cfg.public, + title: 'Datenschutzerklärung', + user: req.user + }); + }); + + /* ##################### */ + /* ####### Login ####### */ + /* ##################### */ + + // Loginseite + app.get('/login', function(req, res) { + res.render('login', { + public: app_cfg.public, + title: 'Login', + user: req.user, + error: req.flash('error') + }); + }); + + // Login-Formular verarbeiten + app.post('/login', passport.authenticate('local', { + failureRedirect: '/login', + failureFlash: 'Login fehlgeschlagen! Bitte prüfen Sie Benutzername und Passwort.' + }), function(req, res) { + if(req.body.rememberme){ + // der Benutzer muss sich fuer 5 Jahre nicht anmelden + req.session.cookie.maxAge = 5 * 365 * 24 * 60 * 60 * 1000; + }; + res.redirect('/'); + }); + + // Login mit IP verarbeiten + app.post('/login_ip', passport.authenticate('ip', { + failureRedirect: '/login', + failureFlash: 'Login mittels IP-Adresse fehlgeschlagen!' + }), function(req, res) { + // der Benutzer muss sich fuer 5 Jahre nicht anmelden + req.session.cookie.maxAge = 5 * 365 * 24 * 60 * 60 * 1000; + res.redirect('/'); + }); + + // Logout verarbeiten + app.post('/logout', function(req, res) { + req.session.destroy(function(err) { + res.redirect('/'); + }) + }); + + /* ######################### */ + /* ##### Einstellungen ##### */ + /* ######################### */ + + // Einstellungen anzeigen + app.get('/config', auth.ensureAuthenticated, function(req, res) { + sql.db_get_userconfig(req.user.id, function(data) { + res.render('user/user_config', { + public: app_cfg.public, + title: 'Einstellungen', + user: req.user, + reset_counter: data + }); + }); + }); + + // Einstellungen speichern + app.post('/config', auth.ensureAuthenticated, function(req, res) { + sql.db_set_userconfig(req.user.id, req.body.set_reset_counter, function(data) { + res.redirect('/config'); + }); + }); + + /* ##################### */ + /* ##### Wachalarm ##### */ + /* ##################### */ + // /waip nach /waip/0 umleiten app.get('/waip', function(req, res) { res.redirect('/waip/0'); @@ -47,6 +148,10 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) }); }); + /* ######################## */ + /* ##### Rueckmeldung ##### */ + /* ######################## */ + // Rueckmeldungs-Aufruf ohne waip_uuid eblehnen app.get('/rmld', function(req, res, next) { var err = new Error('Rückmeldungen sind nur mit gültiger Einsatz-ID erlaubt!'); @@ -69,7 +174,8 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) title: 'Einsatz-Rückmeldung', user: req.user, einsatzdaten: einsatzdaten, - modaldata: req.query.modal + error: req.flash("errorMessage"), + success: req.flash("successMessage") }); } else { var err = new Error('Der angefragte Einsatz ist nicht - oder nicht mehr - vorhanden!'); @@ -85,81 +191,21 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) var rmld_uuid = req.params.rmld_uuid; sql.db_save_rmld(req.body, function(result){ if (result) { - var string = encodeURIComponent(result); - res.redirect('/rmld/' + waip_uuid + '/' + rmld_uuid + '/?modal=' + string); + req.flash('successMessage', 'Rückmeldung erfolgreich gesendet, auf zum Einsatz!'); + res.redirect('/rmld/' + waip_uuid + '/' + rmld_uuid ); waip.reuckmeldung_verteilen_by_uuid(req.params.rmld_uuid); } else { - var err = new Error('Fehler beim senden der Rückmeldung!'); - err.status = 501; - next(err); + req.flash('errorMessage', 'Fehler beim Senden der Rückmeldung!'); + res.redirect('/rmld/' + waip_uuid + '/' + rmld_uuid ); }; }); }); - // get /config - app.get('/config', auth.ensureAuthenticated, function(req, res) { - sql.db_get_userconfig(req.user.id, function(data) { - res.render('user/user_config', { - public: app_cfg.public, - title: 'Einstellungen', - user: req.user, - reset_counter: data - }); - }); - }); + /* ########################## */ + /* ##### Administration ##### */ + /* ########################## */ - app.post('/config', auth.ensureAuthenticated, function(req, res) { - sql.db_set_userconfig(req.user.id, req.body.set_reset_counter, function(data) { - res.redirect('/config'); - }); - }); - - // get /about - app.get('/about', function(req, res) { - res.render('about', { - public: app_cfg.public, - title: 'Über', - user: req.user - }); - }); - - // get /uhr - app.get('/test_clock', function(req, res) { - res.render('tests/test_clock', { - public: app_cfg.public, - title: 'Test Uhr', - user: req.user - }); - }); - - // get /test_wachalarm - app.get('/test_wachalarm', function(req, res) { - res.render('tests/test_wachalarm', { - public: app_cfg.public, - title: 'Test Wachalarm', - user: req.user - }); - }); - - // get /test_rueckmeldung - app.get('/test_rueckmeldung', function(req, res) { - res.render('tests/test_rueckmeldung', { - public: app_cfg.public, - title: 'Test Einsatz-Rückmeldung', - user: req.user - }); - }); - - // get /test_dashboard - app.get('/test_dashboard', function(req, res) { - res.render('tests/test_dashboard', { - public: app_cfg.public, - title: 'Test Dashboard', - user: req.user - }); - }); - - // get /show_active_user + // verbundene Clients anzeigen app.get('/adm_show_clients', auth.ensureAdmin, function(req, res) { sql.db_get_active_clients(function(data) { res.render('admin/adm_show_clients', { @@ -171,7 +217,8 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) }); }); - // get /adm_show_missions + // laufende Einsaetze anzeigen + // TODO: eventuell unter Dashboard oder Startseite anzeigen app.get('/adm_show_missions', auth.ensureAdmin, function(req, res) { sql.db_get_active_waips(function(data) { res.render('admin/adm_show_missions', { @@ -183,7 +230,7 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) }); }); - // get /show_log + // Logdatei app.get('/adm_show_log', auth.ensureAdmin, function(req, res) { sql.db_get_log(function(data) { res.render('admin/adm_show_log', { @@ -195,7 +242,7 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) }); }); - // get /test_alert + // direkten Alarm ausloesen app.get('/adm_run_alert', auth.ensureAdmin, function(req, res) { res.render('admin/adm_run_alert', { public: app_cfg.public, @@ -209,7 +256,7 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) res.redirect('/adm_run_alert'); }); - // get /edit_users + // Benutzer editieren app.get('/adm_edit_users', auth.ensureAdmin, function(req, res) { sql.db_get_users(function(data) { res.render('admin/adm_edit_users', { @@ -217,8 +264,8 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) title: 'Benutzer und Rechte verwalten', user: req.user, users: data, - error: req.flash("errorMessage"), - success: req.flash("successMessage") + error: req.flash('errorMessage'), + success: req.flash('successMessage') }); }); }); @@ -241,58 +288,51 @@ module.exports = function(app, sql, uuidv4, app_cfg, passport, auth, waip, udp) } }); - // get /login - app.get('/login', function(req, res) { - res.render('login', { + /* ###################### */ + /* ##### Testseiten ##### */ + /* ###################### */ + + // Wachalarm-Uhr testen + app.get('/test_clock', function(req, res) { + res.render('tests/test_clock', { public: app_cfg.public, - title: 'Login', + title: 'Test Uhr', user: req.user }); }); - // get /impressum - app.get('/impressum', function(req, res) { - res.render('imprint', { + // Alarmmonitor testen + app.get('/test_wachalarm', function(req, res) { + res.render('tests/test_wachalarm', { public: app_cfg.public, - title: 'Impressum', + title: 'Test Wachalarm', user: req.user }); }); - // get /datenschutz - app.get('/datenschutz', function(req, res) { - res.render('privacy', { + // Rueckmeldung testen + app.get('/test_rueckmeldung', function(req, res) { + res.render('tests/test_rueckmeldung', { public: app_cfg.public, - title: 'Datenschutzerklärung', + title: 'Test Einsatz-Rückmeldung', user: req.user }); }); - app.post('/login', passport.authenticate('local', { - failureRedirect: '/login' - }), function(req, res) { - if(req.body.rememberme){ - // der Benutzer muss sich fuer 5 Jahre nicht anmelden - req.session.cookie.maxAge = 5 * 365 * 24 * 60 * 60 * 1000; - }; - res.redirect('/'); + // Dashboard testen + app.get('/test_dashboard', function(req, res) { + res.render('tests/test_dashboard', { + public: app_cfg.public, + title: 'Test Dashboard', + user: req.user + }); }); + + /* ######################## */ + /* ##### Fehlerseiten ##### */ + /* ######################## */ - app.post('/login_ip', passport.authenticate('ip', { - failureRedirect: '/login' - }), function(req, res) { - // der Benutzer muss sich fuer 5 Jahre nicht anmelden - req.session.cookie.maxAge = 5 * 365 * 24 * 60 * 60 * 1000; - res.redirect('/'); - }); - - app.post('/logout', function(req, res) { - req.session.destroy(function(err) { - res.redirect('/'); - }) - }); - - // catch 404 and forward to error handler + // 404 abfangen und an error handler weiterleiten app.use(function(req, res, next) { var err = new Error('Seite nicht gefunden!'); err.status = 404;