191 lines
4.2 KiB
JavaScript
191 lines
4.2 KiB
JavaScript
var express = require('express');
|
|
var router = express.Router();
|
|
var session;
|
|
|
|
//Database
|
|
var postgres = require("./../db-connect/db-connect");
|
|
|
|
// GoogleOauth2.0
|
|
passport = require('passport'),
|
|
auth = require('../public/login/auth');
|
|
auth(passport);
|
|
router.use(passport.initialize());
|
|
|
|
cookieParser = require('cookie-parser'),
|
|
cookieSession = require('cookie-session');
|
|
|
|
router.use(cookieSession({
|
|
name: 'session',
|
|
keys: ['aoisdzflkudheowe777elkjv']
|
|
}));
|
|
|
|
router.use(cookieParser());
|
|
|
|
function isLoggedIn(req, res, next) {
|
|
console.log("Auth: ", req.session.passport.user.profile.id);
|
|
if (req.session.passport.user.profile.id) {
|
|
return next();
|
|
}
|
|
res.redirect('/')
|
|
}
|
|
|
|
router.get('/', (req, res) => {
|
|
// if (req.session.passport.user.token) {
|
|
// res.redirect('/dash');
|
|
// } else {
|
|
res.redirect('/auth/google');
|
|
// }
|
|
});
|
|
router.get('/auth/google', passport.authenticate('google', {
|
|
scope: ['https://www.googleapis.com/auth/userinfo.profile']
|
|
}));
|
|
router.get('/auth/google/callback',
|
|
passport.authenticate('google', {failureRedirect:'/'}),
|
|
(req, res) => {
|
|
// req.session.passport.user.token = req.user.token;
|
|
res.redirect('/dash');
|
|
}
|
|
);
|
|
|
|
router.get('/logout', (req, res) => {
|
|
req.logout();
|
|
res.redirect("https://www.google.com/accounts/Logout?continue=https://appengine.google.com/_ah/logout?continue=http://localhost:7000/");
|
|
});
|
|
|
|
router.get('/dash', isLoggedIn, function(req, res, next) {
|
|
// console.log("Session: ", req.session.passport.user.token);
|
|
// console.log("User ID: " + req.session.passport.user.profile.id);
|
|
// if (req.session.passport.user.token) {
|
|
res.render("index");
|
|
|
|
// } else {
|
|
// res.redirect('/auth/google');
|
|
// }
|
|
|
|
});
|
|
|
|
//GET Own shoppinglists as JSON
|
|
|
|
router.get("/myshoppinglists", async function(req, res, next) {
|
|
|
|
try {
|
|
//Get user id: req.session.passport.user.profile.id
|
|
res.status(200).send(await postgres.getShoppinglistsAdmin(req.session.passport.user.profile.id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
|
|
});
|
|
|
|
//GET Shared shoppinglists as JSON
|
|
|
|
router.get("/sharedshoppinglists", async function(req, res, next) {
|
|
try {
|
|
//Get user id: req.session.passport.user.profile.id
|
|
res.status(200).send(await postgres.getShoppinglistsShared(req.session.passport.user.profile.id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
|
|
});
|
|
|
|
//POST new shoppinglist
|
|
|
|
router.post("/shoppinglist", async function(req, res, next) {
|
|
try {
|
|
res.status(200).send(await postgres.newShoppinglist(req.body.name, req.body.description, req.session.passport.user.profile.id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
//GET Shoppinglist detail
|
|
|
|
router.get("/shoppinglist_json/:sl_id", async (req, res) => {
|
|
try {
|
|
res.status(200).send(await postgres.displayShoppinglist(req.params.sl_id, req.session.passport.user.profile.id));
|
|
}
|
|
|
|
catch(err) {
|
|
res.status(400).send(await err);
|
|
}
|
|
});
|
|
|
|
//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));
|
|
}
|
|
|
|
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("index1");
|
|
});
|
|
|
|
router.get("/userinfo_json", (req, res) => {
|
|
res.send(req.session.passport.user);
|
|
});
|
|
|
|
// 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) => {
|
|
try {
|
|
await postgres.verifyInvite(req.params.link, req.session.passport.user.profile.id);
|
|
res.redirect("/dash");
|
|
}
|
|
|
|
catch(err) {
|
|
res.redirect("/dash");
|
|
}
|
|
|
|
|
|
});
|
|
|
|
module.exports = router;
|