diff --git a/index.ts b/index.ts
index 38b8866..673b6d7 100644
--- a/index.ts
+++ b/index.ts
@@ -32,81 +32,7 @@ logger.add(
const app = express();
-app.use(express.static("static"));
-app.use(bodyParser.urlencoded({ extended: false }));
-app.use(bodyParser.json());
-
-app.use(function (req, res, next) {
- const pathesWhichRequireDB = ["map", "login", "register"];
- const pathesWhichRequireLogin = ["createElevator"];
- const path = req.path
- const pathesDes = path.split("/")
- let requiresDB = false;
- let requiresLogin = false;
- let allowContinue = true;
- console.log(pathesDes)
-
- if (pathesWhichRequireLogin.indexOf(pathesDes[1]) > -1) {
- requiresLogin = true;
- }
-
- if (pathesDes[1] == "api") {
- requiresDB = true;
- }
- if (pathesWhichRequireDB.indexOf(pathesDes[1]) > -1) {
- requiresDB = true;
- }
-
- if (requiresDB) {
- if (!mysqlIsUpAndOkay) {
- allowContinue = false;
- const data = fs.readFileSync("templates/dbError.html", "utf8");
- let displayText =
- "This might be an artifact of a recent restart. Maybe wait a few minutes and reload this page.";
- if (startUpTime + 60 <= Math.floor(new Date().getTime() / 1000)) {
- displayText =
- "The server failed to connect to the MySQL server. This means it was unable to load any data.";
- }
- if (mySQLstate == 1) {
- displayText =
- "There is a problem with the database servers setup. Please check the log for more info.";
- }
-
- res.send(
- Eta.render(data, {
- author: metainfo.author,
- desc: metainfo.desc,
- siteTitel: metainfo.sitePrefix + "Error",
- fontawesomeKey: fontawesomeKey,
- displayText: displayText,
- })
- );
- }
- }
-
- if (requiresLogin) {
- allowContinue = false;
- const data = fs.readFileSync("templates/redirect.html", "utf8");
- res.send(
- Eta.render(data, {
- author: metainfo.author,
- desc: metainfo.desc,
- siteTitel: metainfo.sitePrefix + "Redirect",
- fontawesomeKey: fontawesomeKey,
- url: "/login?r=" + path,
- })
- );
- }
-
- console.log('Time:', Date.now())
- if (allowContinue) {
- next()
- } else {
- console.log("Stopped further exec of route")
- }
-
-})
/*
app.use(csp.contentSecurityPolicy({
@@ -168,6 +94,84 @@ try {
);
}
+app.use(express.static("static"));
+
+app.use(bodyParser.urlencoded({ extended: false }));
+app.use(bodyParser.json());
+app.use(session({ secret: cookieSecret }));
+app.use(function (req, res, next) {
+ const pathesWhichRequireDB = ["map", "login", "register"];
+ const pathesWhichRequireLogin = ["createElevator"];
+ const path = req.path
+ const pathesDes = path.split("/")
+ let requiresDB = false;
+ let requiresLogin = false;
+ let allowContinue = true;
+ console.log(pathesDes)
+
+ if (pathesWhichRequireLogin.indexOf(pathesDes[1]) > -1) {
+ requiresLogin = true;
+ }
+
+ if (pathesDes[1] == "api") {
+ requiresDB = true;
+ }
+ if (pathesWhichRequireDB.indexOf(pathesDes[1]) > -1) {
+ requiresDB = true;
+ }
+
+ if (requiresDB) {
+ if (!mysqlIsUpAndOkay) {
+ allowContinue = false;
+ const data = fs.readFileSync("templates/dbError.html", "utf8");
+ let displayText =
+ "This might be an artifact of a recent restart. Maybe wait a few minutes and reload this page.";
+ if (startUpTime + 60 <= Math.floor(new Date().getTime() / 1000)) {
+ displayText =
+ "The server failed to connect to the MySQL server. This means it was unable to load any data.";
+ }
+ if (mySQLstate == 1) {
+ displayText =
+ "There is a problem with the database servers setup. Please check the log for more info.";
+ }
+
+ res.send(
+ Eta.render(data, {
+ author: metainfo.author,
+ desc: metainfo.desc,
+ siteTitel: metainfo.sitePrefix + "Error",
+ fontawesomeKey: fontawesomeKey,
+ displayText: displayText,
+ })
+ );
+ }
+ }
+
+ if (requiresLogin) {
+ if (req.session.username == undefined) {
+ allowContinue = false;
+ const data = fs.readFileSync("templates/redirect.html", "utf8");
+ res.send(
+ Eta.render(data, {
+ author: metainfo.author,
+ desc: metainfo.desc,
+ siteTitel: metainfo.sitePrefix + "Redirect",
+ fontawesomeKey: fontawesomeKey,
+ url: "/login?r=" + path,
+ })
+ );
+ }
+ }
+
+ console.log('Time:', Date.now())
+ if (allowContinue) {
+ next()
+ } else {
+ console.log("Stopped further exec of route")
+ }
+
+})
+
const transport = nodemailer.createTransport({
host: mailConf.host,
port: mailConf.port,
diff --git a/routes/auth.route.ts b/routes/auth.route.ts
index 8d55b2e..dc3669e 100644
--- a/routes/auth.route.ts
+++ b/routes/auth.route.ts
@@ -238,7 +238,7 @@ module.exports = function (app, con, logger, metainfo, jsonConfig) {
app.get("/profile", function (req, res) {
if (req.session.username != undefined) {
let greeting = greetingTime(new Date());
- greeting += req.session.username;
+ greeting += " " + req.session.username;
const hash = cryptoF
.createHash("md5")
.update(req.session.mail.replace(" ", "").toLowerCase())
@@ -299,7 +299,7 @@ module.exports = function (app, con, logger, metainfo, jsonConfig) {
password != ""
) {
if (mailRegex.test(mail)) {
- const stmt = "SELECT * FROM users WHERE email='?';";
+ const stmt = "SELECT * FROM users WHERE email=?;";
con.query(stmt, [mail], function (err, result) {
if (err) throw err; // TODO proper error page
if (result.length == 0) {
@@ -414,7 +414,7 @@ module.exports = function (app, con, logger, metainfo, jsonConfig) {
} else {
const emailContent =
"Hi! \n You have created an account for the open elevator map. To finalize the process please verify your E-Mail adress. Use this link: http://" +
- serverAdress +
+ jsonConfig.serverAdress +
"/verify/" +
result[0].token;
transport.sendMail({
diff --git a/static/js/createElevator.js b/static/js/createElevator.js
new file mode 100644
index 0000000..4f7cce2
--- /dev/null
+++ b/static/js/createElevator.js
@@ -0,0 +1,267 @@
+
+ var lockMap = false;
+
+ function noRestore() {
+ off();
+ Cookies.remove("tempStore")
+ }
+
+ function restoreFunc() {
+ try {
+ dataBlock = JSON.parse(dataBlock)
+ document.getElementById("lat").value = dataBlock["lat"]
+ document.getElementById("lng").value = dataBlock["lng"]
+ document.getElementById("type").value = dataBlock["type"]
+ document.getElementById("visit").value = dataBlock["visit"]
+ document.getElementById("pepl").value = dataBlock["pepl"]
+ document.getElementById("weig").value = dataBlock["weig"]
+ document.getElementById("manuf").value = dataBlock["manuf"]
+ document.getElementById("model").value = dataBlock["model"]
+ document.getElementById("flor").value = dataBlock["flor"]
+ document.getElementById("description").value = dataBlock["description"]
+ } catch (ex) {
+ dataBlock = {}
+ }
+ off()
+ }
+
+ dataBlock = Cookies.get("tempStore");
+ if (dataBlock == undefined) {
+ dataBlock = {};
+ } else {
+ on()
+ }
+
+ var currentPage = 0;
+ function saveValues() {
+ dataBlock["lat"] = document.getElementById("lat").value
+ dataBlock["lng"] = document.getElementById("lng").value
+ dataBlock["type"] = document.getElementById("type").value
+ dataBlock["visit"] = document.getElementById("visit").value
+ dataBlock["pepl"] = document.getElementById("pepl").value
+ dataBlock["weig"] = document.getElementById("weig").value
+ dataBlock["manuf"] = document.getElementById("manuf").value
+ dataBlock["model"] = document.getElementById("model").value
+ dataBlock["flor"] = document.getElementById("flor").value
+ dataBlock["description"] = document.getElementById("description").value
+ Cookies.set('tempStore', JSON.stringify(dataBlock))
+ }
+
+ function submit() {
+ currentPage = 6;
+ updateDialog()
+ saveValues()
+ const options = {
+ method: 'POST',
+ body: JSON.stringify({})
+ };
+
+ fetch('/api/saveNewElevatorMeta', options)
+ .then(response => response.json())
+ .then(response => {
+ console.warn("!!!!!!!!!!!!", response)
+ document.getElementById("imageUploadInfo").style.display = 'block';
+ var filesToSend = $('#myFile').prop('files').length;
+ var i = 0;
+ while (i < filesToSend) {
+ document.getElementById("imageUploadInfo").innerHTML = "Uploading image " + String(i) + "/" + String(filesToSend)
+ console.log("Files left to send: ", filesToSend - i)
+ var file_data = $('#myFile').prop('files')[i];
+ var form_data = new FormData();
+ form_data.append('file', file_data);
+
+ console.log(file_data)
+ if (String(file_data.type).includes("image/")) {
+ $.ajax({
+ url: '/api/uploadImage?id=' + response.id,
+ dataType: 'json',
+ cache: false,
+ contentType: false,
+ processData: false,
+ data: form_data,
+ type: 'post',
+ success: function (data) {
+ alert(data);
+ }
+ });
+ } else {
+ console.log("Skipping nonimage file")
+ }
+ i++;
+ }
+ console.log("DONE!")
+ });
+
+
+
+
+
+
+
+
+ }
+ function updateDialog() {
+ if (currentPage == 0) {
+ document.getElementById("step1").style.display = 'block';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'none';
+ }
+ if (currentPage == 1) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'block';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'none';
+ }
+ if (currentPage == 2) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'block';
+ document.getElementById("step4").style.display = 'none';
+ lockMap = false;
+ }
+ if (currentPage == 3) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'block';
+ document.getElementById("step5").style.display = 'none';
+ document.getElementById("missingAlert").style.display = 'none';
+ lockMap = true;
+ }
+ if (currentPage == 4) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'none';
+
+ containsEmpt = false;
+ for (const [key, value] of Object.entries(dataBlock)) {
+ if (value == "" || value == undefined) {
+ console.log("hi")
+ console.log(key, value)
+ containsEmpt = true;
+ document.getElementById("missingAlert").style.display = 'block';
+ }
+ }
+ if (containsEmpt == false) {
+ document.getElementById("missingAlert").style.display = 'none';
+ currentPage = 5;
+ }
+ console.log(containsEmpt);
+ }
+ if (currentPage == 5) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'none';
+ document.getElementById("step5").style.display = 'block';
+ document.getElementById("missingAlert").style.display = 'none';
+ }
+ if (currentPage == 6) {
+ document.getElementById("step1").style.display = 'none';
+ document.getElementById("step2").style.display = 'none';
+ document.getElementById("step3").style.display = 'none';
+ document.getElementById("step4").style.display = 'none';
+ document.getElementById("step5").style.display = 'none';
+ document.getElementById("step6").style.display = 'block';
+ document.getElementById("missingAlert").style.display = 'none';
+ }
+ saveValues();
+ console.log(dataBlock)
+
+ }
+ function nextDialogePage() {
+ currentPage++;
+ updateDialog();
+ }
+ function prevPage() {
+ currentPage--;
+ updateDialog();
+ }
+
+
+ var latElm = document.getElementById("lat");
+ var lngElm = document.getElementById("lng");
+
+ latElm.addEventListener('input', function (evt) {
+ if(!lockMap){
+ markers.clearLayers();
+ console.log(evt.target.value)
+ const lat = evt.target.value;
+ const lng = lngElm.value;
+ var marker = new theMarker([lat, lng])
+ //marker.addTo(mymap)
+ markers.addLayer(marker);
+ markers.addTo(mymap);
+ }
+
+ });
+
+ lngElm.addEventListener('input', function (evt) {
+ if(!lockMap){
+ markers.clearLayers();
+ console.log(evt.target.value)
+ const lat = latElm.value;
+ const lng = evt.target.value;
+ var marker = new theMarker([lat, lng])
+ //marker.addTo(mymap)
+ markers.addLayer(marker);
+ markers.addTo(mymap);
+ }
+ });
+
+ var amountOfImages = 0;
+ var markers = L.markerClusterGroup();
+ slideIndex = 1;
+
+ var mymap = L.map("map").setView([51.505, -0.09], 50);
+
+ theMarker = L.Marker.extend({
+ options: {
+ id: "-1",
+ },
+ });
+
+ function showPosition(position) {
+ console.log(position.coords);
+
+ mymap.setView(
+ new L.LatLng(position.coords.latitude, position.coords.longitude),
+ 10
+ );
+ // mymap.setView(new L.LatLng(10.737, -73.923), 8);
+ }
+
+ home()
+
+ mymap.on('click', function (e) {
+ if(!lockMap){
+ markers.clearLayers();
+ var coord = e.latlng;
+ var lat = coord.lat;
+ var lng = coord.lng;
+ var marker = new theMarker([lat, lng])
+ //marker.addTo(mymap)
+ markers.addLayer(marker);
+ markers.addTo(mymap);
+ document.getElementById("lat").value = lat
+ document.getElementById("lng").value = lng
+ console.log("You clicked the map at latitude: " + lat + " and longitude: " + lng);
+ }else{
+ console.log("The map is locked.")
+ }
+ });
+
+ function addPin(item, index) {
+ var marker = new theMarker([item.lat, item.lng], {
+ id: item.id,
+ }).on("click", onClick);
+ // var marker = new L.Marker()
+ //marker.addTo(mymap).on('click', onClick);
+ markers.on("clusterclick", function (a) {
+ //alert('cluster ' + a.layer.getAllChildMarkers().length);
+ });
+ markers.addLayer(marker);
+ }
+
\ No newline at end of file
diff --git a/templates/createElevator.html b/templates/createElevator.html
index f756aee..32d2ea0 100644
--- a/templates/createElevator.html
+++ b/templates/createElevator.html
@@ -158,231 +158,11 @@
-
+