var express = require("express"); var cookieParser = require("cookie-parser"); var app = express(); app.use(cookieParser()); var uuid = require("uuid/v4"); var mysql = require("mysql"); var con = mysql.createConnection({ host: "localhost", user: "minis", password: "asIt90@6", database: "minis" }); con.connect(err => { if (err) { console.log("Cant connect to MySQL database"); throw err; } console.log("Connected to database!"); }); app.get('/', (req, res) => { res.send("Welcome to the miniplan api!"); }); app.get('/login', (req, res) => { var username = req.query.username; var password = req.query.password; if(username == undefined || password == undefined){ res.send({success: false, error: "Missing parameters"}); return; } username = username.toLowerCase(); con.query("SELECT UserToken FROM ministranten WHERE Username='" + username + "'", (err, result) => { if(result[0]["UserToken"] == req.cookies.loginToken){ res.send({success: true}); }else{ con.query("SELECT Passwort FROM ministranten WHERE Username='" + username + "'", (err, result) => { if (err) throw err; if(password == result[0]["Passwort"]){ var usertoken = uuid(); res.cookie("loginToken", usertoken); con.query("UPDATE `ministranten` SET `UserToken` = '" + usertoken + "' WHERE `ministranten`.`Username` = '" + username + "';"); res.send({success: true, token: usertoken}); }else{ res.send({success: false}); } }); } }); }); app.get("/user/:user/update", (req, res) => { }); app.get("/gottesdienste", (req, res) => { var groupid = req.params.groupid; con.query("SELECT ID from gottesdienstgruppe ORDER BY ID DESC LIMIT 1", (err, result) => { if (err) throw err; con.query("SELECT * from gottesdienste WHERE GruppeID='" + result[0]["ID"] + "' ORDER BY `gottesdienste`.`Datum` ASC LIMIT 0 , 30 ", (err, result) => { if (err) throw err; res.send(JSON.stringify(result)); }); }); }); app.get("/gottesdienste/:groupid", (req, res) => { var groupid = req.params.groupid; con.query("SELECT * from gottesdienste WHERE GruppeID='" + groupid + "' ORDER BY `gottesdienste`.`Datum` ASC LIMIT 0 , 30", (err, result) => { if (err) throw err; res.send(JSON.stringify(result)); }); }); app.get("/groups", (req, res) => { con.query("SELECT * from gottesdienstgruppe ORDER BY `gottesdienstGruppe`.`ID` DESC LIMIT 0, 5", (err, result) => { if (err) throw err; res.send(JSON.stringify(result)); }); }); app.get("/ministranten", (req, res) =>{ con.query("SELECT UserToken FROM ministranten WHERE UserToken='" + req.cookies.loginToken + "'", (err, result) => { var loggedIn = result.length == 1; con.query("SELECT Name, Username FROM `ministranten`", (err, result) => { if (err) throw err; var minis = result; if(!loggedIn){ for(var i = 0; i < minis.length; i++){ if(minis[i]["Name"] == "admin"){ minis.splice(0, 1); i--; continue; } minis[i]["Name"] = minis[i]["Name"].split(" ")[0].substring(0, 1) + ". " + minis[i]["Name"].split(" ")[1]; } }else{ minis.splice(0, 1); } for(var i = 0; i < minis.length; i++){ attachToMini(minis[i]) } res.send(JSON.stringify(minis)); }); }); }); var attachToMini = function(mini){ mini.registered = []; con.query("SELECT * FROM `" + mini.Name.toLowerCase() + "` LIMIT 0 , 30", (err, data) => { for(var j = 0; j < data.length; j++){ mini.registered[data[j]["GottesdienstIDs"]] = data[j]["Anwesend"]; } console.log(JSON.stringify(mini)); }); } app.listen(3000, () => { console.log("API started!"); }); function removeFromArrayByValue(value, array) { var index = array.indexOf(value); if(index > -1){ array.splice(index, 1); } } function removeFromArray(index, array) { var index = array.indexOf(value); if(index > -1){ array.splice(index, 1); } }