Wenn /dash aufgerufen wird, wird in der Konsole ein MSG TOKEN ausgegeben, dieser muss kopiert werden. Wenn localhost:7000/push/<MSGTOKEN> aufgerufen wird, bekommt der user dem der MSG TOKEN gehört eine push notification, sollange er den Browser offen hat
323 lines
7.3 KiB
JavaScript
323 lines
7.3 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
// var firebase = require('firebase');
|
|
var admin = require('firebase-admin');
|
|
//Database
|
|
var postgres = require("./../db-connect/db-connect");
|
|
|
|
|
|
// Initialize Firebase
|
|
// const config = {
|
|
// apiKey: "AIzaSyCuvwf78cmSDoZ2yS4XxHZhnjUn7yIHYfw",
|
|
// authDomain: "test-667ca.firebaseapp.com",
|
|
// databaseURL: "https://test-667ca.firebaseio.com",
|
|
// projectId: "test-667ca",
|
|
// storageBucket: "test-667ca.appspot.com",
|
|
// messagingSenderId: "221332577314"
|
|
// };
|
|
// firebase.initializeApp(config);
|
|
|
|
var serviceAccount = require('../login/firebaseAdminKey.json');
|
|
|
|
|
|
|
|
|
|
var firebaseAdmin = admin.initializeApp({
|
|
credential: admin.credential.cert(serviceAccount),
|
|
databaseURL: 'https://test-667ca.firebaseio.com'
|
|
});
|
|
|
|
//Push
|
|
router.get('/push/:msgtoken', function (req, res, next) {
|
|
var message = {
|
|
data: {
|
|
title: 'Nachricht',
|
|
text: 'Die Einkaufsliste wurde geupdated'
|
|
}
|
|
};
|
|
|
|
const token = req.params.msgtoken
|
|
firebaseAdmin.messaging().sendToDevice(token, message)
|
|
.then(function(response) {
|
|
// See the MessagingDevicesResponse reference documentation for
|
|
// the contents of response.
|
|
console.log('Successfully sent message:', response);
|
|
})
|
|
.catch(function(error) {
|
|
console.log('Error sending message:', error);
|
|
});
|
|
|
|
|
|
});
|
|
|
|
|
|
// Login und Dash
|
|
router.get('/', function(req, res, next) {
|
|
res.render('index');
|
|
});
|
|
|
|
|
|
router.get('/dash/:idtoken', function(req, res, next) {
|
|
// const msgtoken = req.params.msgtoken;
|
|
const token = req.params.idtoken;
|
|
var uid;
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
// HIER WEITER MACHEN
|
|
// uid ist nur hier drinen verfügbar
|
|
|
|
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
|
|
|
|
|
|
|
|
res.render('dash');
|
|
});
|
|
|
|
router.get('/logout', (req, res, next) => {
|
|
|
|
|
|
});
|
|
|
|
|
|
// SmartShopper
|
|
|
|
//GET Own shoppinglists as JSON
|
|
|
|
router.get("/myshoppinglists",async function(req, res, next) {
|
|
var token = req.query.idtoken;
|
|
console.log("/myshoppinglists idtoken: ", token)
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(async function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
console.log("uid", uid)
|
|
try {
|
|
//Get user id: req.session.passport.user.profile.id
|
|
res.status(200).send(await postgres.getShoppinglistsAdmin(uid));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
|
|
|
|
});
|
|
|
|
//GET Shared shoppinglists as JSON
|
|
|
|
router.get("/sharedshoppinglists", async function(req, res, next) {
|
|
var token = req.query.idtoken;
|
|
console.log("/sharedshoppinglists idtoken: ", token)
|
|
var uid;
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(async function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
console.log("UID: ", uid);
|
|
try {
|
|
//Get user id: das da oben
|
|
res.status(200).send(await postgres.getShoppinglistsShared(uid));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
}).catch( async function(error) {
|
|
console.log(error)
|
|
});
|
|
|
|
|
|
});
|
|
|
|
//POST new shoppinglist
|
|
|
|
router.post("/shoppinglist", async function(req, res, next) {
|
|
console.log("/shoppinglist idtoken: ", req.body.idtoken)
|
|
var token = req.body.idtoken;
|
|
|
|
var uid;
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(async function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
console.log("UID: ", uid);
|
|
console.log("So andere sachen: ", req.body.name, req.body.description);
|
|
try {
|
|
|
|
res.status(200).send(await postgres.newShoppinglist(req.body.name, req.body.description, uid, req.body.color));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
});
|
|
//GET Shoppinglist detail
|
|
|
|
router.get("/shoppinglist_json/:sl_id", async (req, res) => {
|
|
var token = req.query.idtoken;
|
|
var uid;
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(async function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
console.log("UID: ", uid);
|
|
try {
|
|
res.status(200).send(await postgres.displayShoppinglist(req.params.sl_id, uid));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
|
|
});
|
|
|
|
//DELETE Shoppinglist
|
|
|
|
router.delete("/shoppinglist", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.deleteShoppinglist(req.body.sl_id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
//Group erstellen
|
|
|
|
router.post("/group", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.addGroup(req.body.sl_id, req.body.name, req.body.color, req.body.hidden));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
|
|
});
|
|
|
|
//Item erstellen
|
|
|
|
router.post("/item", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.addItem(req.body.group_id, req.body.sl_id, req.body.name, req.body.count));
|
|
}
|
|
|
|
catch (err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
router.get("/test1", (req, res) => {
|
|
res.render("test");
|
|
});
|
|
|
|
router.get("/userinfo_json", (req, res) => {
|
|
var token = req.query.idtoken;
|
|
|
|
console.log("/userinfo_json idtoken: ", token)
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(function(decodedToken) {
|
|
res.send(decodedToken);
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
});
|
|
|
|
//Rename Shoppinglist
|
|
router.put("/shoppinglist", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.editShoppinglist(req.body.sl_id, req.body.name, req.body.description, req.body.color));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
//Rename Group
|
|
|
|
router.put("/group", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.editGroup(req.body.sl_id, req.body.group_id, req.body.name, req.body.color, req.body.hidden));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
router.put("/item", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.editItem(req.body.sl_id, req.body.group_id, req.body.item_id, req.body.name, req.body.count));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
router.delete("/group", async(req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.deleteGroup(req.body.group_id, req.body.sl_id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
router.delete("/item", async(req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.deleteItem(req.body.item_id, req.body.group.id, req.body.sl_id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
// Invite System
|
|
|
|
router.post("/invite", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.createInvite(req.body.sl_id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
router.get("/invite/:link", async (req, res) => {
|
|
var token = req.query.idtoken;
|
|
var uid;
|
|
firebaseAdmin.auth().verifyIdToken(token)
|
|
.then(function(decodedToken) {
|
|
uid = decodedToken.uid;
|
|
console.log("UID: ", uid);
|
|
try {
|
|
postgres.verifyInvite(req.params.link, uid);
|
|
res.redirect("/dash");
|
|
}
|
|
catch(err) {
|
|
res.redirect("/dash");
|
|
}
|
|
}).catch(function(error) {
|
|
console.log(error)
|
|
});
|
|
});
|
|
|
|
module.exports = router;
|