From 5dfadaef2f2011f22e1e7e2848acc3467a0b36f5 Mon Sep 17 00:00:00 2001 From: Lukas Nowy Date: Sat, 16 Feb 2019 17:36:38 +0100 Subject: [PATCH] Invite System --- express-server/db-connect/db-connect.js | 5 +++ express-server/public/invite/inv.js | 47 +++++++++++++++++++++++++ express-server/routes/index.js | 34 ++++++++++++++---- express-server/views/invite.ejs | 17 +++++++++ 4 files changed, 96 insertions(+), 7 deletions(-) create mode 100644 express-server/public/invite/inv.js create mode 100644 express-server/views/invite.ejs diff --git a/express-server/db-connect/db-connect.js b/express-server/db-connect/db-connect.js index 2d768568..d92f18b2 100644 --- a/express-server/db-connect/db-connect.js +++ b/express-server/db-connect/db-connect.js @@ -338,8 +338,13 @@ async function getDonePurchases(uid) { async function verifyInvite(link, user_id) { try { + + console.log("LIIINK: ", link); + console.log("UID: ", user_id); + let result = await query('SELECT row_to_json("Shoppinglist") AS obj FROM "Shoppinglist" WHERE invitelink = $1;', [link]); let sl_id = result[0].sl_id; + console.log("!!! SL ID: ", sl_id); await nonQuery('INSERT INTO "Shoppinglist_member" (username, sl_id) VALUES ($1, $2);', [user_id, sl_id]); } diff --git a/express-server/public/invite/inv.js b/express-server/public/invite/inv.js new file mode 100644 index 00000000..2d29eed6 --- /dev/null +++ b/express-server/public/invite/inv.js @@ -0,0 +1,47 @@ +$(document).ready(function() { + + + +// Initialize Firebase +var 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 segment_str = window.location.pathname; + var segment_array = segment_str.split( '/' ); + var last_segment = segment_array.pop(); + + verifyInvite(last_segment); + + + function verifyInvite(link) { + alert("Ore Link", link) + firebase.auth().onAuthStateChanged(function(user){if(user){firebase.auth().currentUser.getIdToken(/* forceRefresh */ true).then(function(idtoken) { + $.ajax({ + type: "POST", + url: "/invitemember", + data: { + idtoken: idtoken, + link: link + }, + success(){ + window.location.href = "/dash/" + idtoken + }, + error(err){ + console.error("Error: " + err); + } + }); + }).catch((error) => console.error("Get id token client error: ", error));}else{console.log("Check Auth error", user)}}); + } + + +}); + diff --git a/express-server/routes/index.js b/express-server/routes/index.js index 29d360d8..ff64dbc5 100644 --- a/express-server/routes/index.js +++ b/express-server/routes/index.js @@ -130,24 +130,23 @@ router.get("/myshoppinglists",async function(req, res, next) { 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); + console.log("uid", uid) try { - //Get user id: das da oben + //Get user id: req.session.passport.user.profile.id res.status(200).send(await postgres.getShoppinglistsShared(uid)); } catch(err) { res.status(400).send(await err); } - }).catch( async function(error) { + + }).catch(function(error) { console.log(error) }); - + }); @@ -339,9 +338,29 @@ router.post("/maninvite", async (req, res) => { }); router.get("/invite/:invitelink", async (req, res) => { - res.status(200).render("invitelogin", {invitelink: req.params.invitelink}); + res.status(200).render("invite"); }); +router.post("/invitemember", (req, res) => { + + var token = req.body.idtoken; + var uid; + firebaseAdmin.auth().verifyIdToken(token) + .then(async function(decodedToken) { + uid = decodedToken.uid; + + try { + console.log("Route LInk inv", req.body.link); + res.status(200).send(await postgres.verifyInvite(req.body.link, uid)); + } + + catch(err) { + res.status(400).send(await err); + } + }).catch(function(error) { + console.log(error) + }); +}); //Update User @@ -441,4 +460,5 @@ router.post("/dones", async function(req, res, next) { console.log(error) }); }); + module.exports = router; diff --git a/express-server/views/invite.ejs b/express-server/views/invite.ejs new file mode 100644 index 00000000..5cd22017 --- /dev/null +++ b/express-server/views/invite.ejs @@ -0,0 +1,17 @@ + + + + + + + Document + + + + + + + + + + \ No newline at end of file