2018-12-08 16:19:06 +01:00

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;